前端知識點參考
JavaScript
ES6/ES2015
這是本人非常看重的一塊;ES5以前,JavaScript充其量跟C也差不了太多,全域性變數滿天飛,感覺不好。ES6之後引入了很多新特性,比如class,async,Promise等等,瞬間就充滿了活力,非常吸引人。
ECMAScript 6 入門這套內容可以多看看,工作中可以應用到
- const 和 let
- 模板字串
- 預設引數
- 箭頭函式
- 模組的 Import 和 Export
- 析構賦值
- Spread Operator...
- Promises
- async/await
- class
- JavaScript中使用fetch進行非同步請求
- Array和Set互轉,實現陣列去重
- Babel轉碼,將ES6程式碼對映為ES5,相容瀏覽器
原型
JavaScript是通過物件,建構函式(類),原型(建構函式.prototype)三個實體和三種指標,__proto__,prototype, constructor,
來實現物件導向功能的。
在ES5以前,理解這一點非常重要,是物件導向程式設計的基礎。
ES6之後,可以直接使用class, extend
等關鍵字,理解起來就方便多了。雖然被稱為語法糖,但是實際上非常重要。
徹底理解JavaScript原型
javaScript原型鏈理解
物件模型的細節
繼承與原型鏈
React
- React是一個典型的MVC框架,但是不是一個完整的MVC框架,它是構建易於可重複呼叫的web元件,側重於UI, 也就是view層。
- React的主旨是元件化,React.Component是基類;
- JSX 是 JavaScript 語法的擴充套件。React 開發不一定使用 JSX ,但我們建議使用它。標籤也會轉化為JavaScript 程式碼,會快一點;
- React通過對DOM(Document Object Model)的模擬,最大限度地減少與DOM的互動。
- state 和 props 主要的區別在於 props 是不可變的,而 state 可以根據與使用者互動來改變。而子元件只能通過 props 來傳遞資料
- 父傳子,通過props;子傳父,通過函式引數;兄弟之間通訊,通過父元件作為媒介;
-
生命週期函式:
- React Refs獲取DOM節點上元件
- 教程:簡介 React
Flux
Flux 是一種架構思想,和 MVC 一樣,用以解決軟體結構的問題,如上所說 React 只是涉及了 UI 層所以在搭建大型應用時必須要有與之配套的應用架構。在 React 社群大家普遍使用 Flux 架構的思想來搭建應用。
Redux
dva就是基於這個二次開發而來的
Redux 中文文件
dva
- dvajs/dva-knowledgemap
- 初識 Dva
- dva 的 effects 是通過 generator 組織的。Generator 返回的是迭代器,通過 yield 關鍵字實現暫停功能。
- React Component 有 3 種定義方式,分別是 React.createClass, class 和 Stateless Functional Component。推薦儘量使用最後一種,保持簡潔和無狀態。這是函式,不是 Object,沒有 this 作用域,是 pure function。
- class 是保留詞,所以新增樣式時,需用 className 代替 class 。
- JavaScript 表示式需要用 {} 括起來,會執行並返回結果。
- Spread Attributes;這是 JSX 從 ECMAScript6 借鑑過來的很有用的特性,用於擴充元件 props 。
const attrs = {
href: 'http://example.org',
target: '_blank',
};
<a {...attrs}>Hello</a>
- JavaScript 是弱型別語言,所以請儘量宣告 propTypes 對 props 進行校驗,以減少不必要的問題。
- CSS Modules 預設是區域性作用域的,想要宣告一個全域性規則,可用 :global 語法。
- reducer 是一個函式,接受 state 和 action,返回老的或新的 state 。即:(state, action) => state
- dva 裡,effects 和 subscriptions 的拋錯全部會走 onError hook,所以可以在 onError 裡統一處理錯誤。
- Effects: put用於觸發 action 。call用於呼叫非同步邏輯,支援 promise 。select用於從 state 裡獲取資料。
- subscriptions 是訂閱,用於訂閱一個資料來源,然後根據需要 dispatch 相應的 action。資料來源可以是當前的時間、伺服器的 websocket 連線、keyboard 輸入、geolocation 變化、history 路由變化等等。格式為 ({ dispatch, history }) => unsubscribe 。
- Route Components 是指 ./src/routes/ 目錄下的檔案,他們是 ./src/router.js 裡匹配的 Component。
-
dva架構圖
- State 表示 Model 的狀態資料,通常表現為一個 javascript 物件(immutable data)。
- Action 是一個普通 javascript 物件,它是改變 State 的唯一途徑。無論是從 UI 事件、網路回撥,還是 WebSocket 等資料來源所獲得的資料,最終都會通過 dispatch 函式呼叫一個 action,從而改變對應的資料。
- dispatch 是用於觸發 action 的函式,action 是改變 State 的唯一途徑,但是它只描述了一個行為,而 dipatch 可以看作是觸發這個行為的方式。
dispatch是函式,action是函式的引數。 - 在 dva 中,reducers 聚合積累的結果是當前 model 的 state 物件。通過 actions 中傳入的值,與當前 reducers 中的值進行運算獲得新的值(也就是新的 state)。需要注意的是 Reducer 必須是純函式。
- Effect 被稱為副作用,在我們的應用中,最常見的就是非同步操作,Effects 的最終流向是通過 Reducers 改變 State。
- Subscription 語義是訂閱,用於訂閱一個資料來源,然後根據條件 dispatch 需要的 action。資料來源可以是當前的時間、伺服器的 websocket 連線、keyboard 輸入、geolocation 變化、history 路由變化等等。
- 這裡的路由Router通常指的是前端路由,由於我們的應用現在通常是單頁應用,所以需要前端程式碼來控制路由邏輯,通過瀏覽器提供的 History API 可以監聽瀏覽器url的變化,從而控制路由相關操作。
- 在 dva 中我們通常以頁面維度來設計 Container Components。
所以在 dva 中,通常需要 connect Model的元件都是 Route Components,組織在/routes/目錄下,而/components/目錄下則是純元件(Presentational Components)。
antd
PC端元件庫
Ant Design of React
antd-mobile
移動端元件庫
Ant Design Mobile of React
CSS
Flex佈局
- Flex 是 Flexible Box 的縮寫,意為"彈性佈局",用來為盒狀模型提供最大的靈活性。
- 設為 Flex 佈局以後,子元素的float、clear和vertical-align屬性將失效。
- 採用 Flex 佈局的元素,稱為 Flex 容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為 Flex 專案(flex item),簡稱"專案"。
- 容器預設存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。
- flex-direction屬性決定主軸的方向(即專案的排列方向)。
- flex-wrap屬性定義,如果一條軸線排不下,如何換行。
- flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,預設值為row nowrap。
- justify-content屬性定義了專案在主軸上的對齊方式。
- align-items屬性定義專案在交叉軸上如何對齊。
- order屬性定義專案的排列順序。數值越小,排列越靠前,預設為0。
- flex-grow屬性定義專案的放大比例,預設為0,即如果存在剩餘空間,也不放大。
- flex-shrink屬性定義了專案的縮小比例,預設為1,即如果空間不足,該專案將縮小。
- flex-basis屬性定義了在分配多餘空間之前,專案佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即專案的本來大小。它可以設為跟width或height屬性一樣的值(比如350px),則專案將佔據固定空間。
- flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選。該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關值。
- align-self屬性允許單個專案有與其他專案不一樣的對齊方式,可覆蓋align-items屬性。預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch。
LESS
HTML
HTML5
webpack
Node
npm
相關文章
- php 知識點參考PHP
- MHA知識點參考
- 駕考知識點
- 前端知識點前端
- 大前端常見面試題:HTML常考知識點前端面試題HTML
- html前端知識點HTML前端
- 前端小知識點前端
- Redis常考的知識點Redis
- 前端參考指南前端
- ASQ備考重點知識分享
- web前端知識點(webpack篇)Web前端
- 前端小知識點彙總前端
- 前端知識點(持續更新)前端
- 前端知識點總結——Vue前端Vue
- 前端知識點總結——HTML前端HTML
- 前端知識點總結——DOM前端
- 前端(js html)小知識點前端JSHTML
- HTTP知識點(前端需掌握)HTTP前端
- 前端必備知識點—SVG前端SVG
- web前端知識點(JavaScript篇)Web前端JavaScript
- 前端知識點系列一:HTML前端HTML
- 前端零碎知識點前端
- Vue常考知識點--元件通訊Vue元件
- 參加web前端培訓要學哪些知識Web前端
- Vue常考知識點--extend 能做什麼Vue
- RHCE考試的一些知識點
- 前端必須掌握的知識點前端
- 前端面試知識點錦集前端面試
- 前端面試知識點目錄整理前端面試
- 前端知識點總結——JavaScript基礎前端JavaScript
- 前端知識點總結—面試專用前端面試
- 前端知識點總結——H5前端H5
- 前端知識點總結——C3前端
- 前端知識點小結--node、express、mongodb前端ExpressMongoDB
- 前端開發知識點之 html &css前端HTMLCSS
- 史上前端面試最全知識點前端面試
- Vue常考知識點--computed 和 watch 區別Vue
- 計算機網路常考知識點總結計算機網路