專案初始化
腳手架
vue-cli
create-react-app
create-react-native
各種boilerplate(github 搜尋 關鍵字+boilerplate)
框架和庫
UI框架
-
vue
element ui
iview
-
react
antd
前後端互動
fetch
axios
編碼規範
eslint
stylelint
打包構建
webpack
一切皆模組,都可以通過js的方式引入
webpack核心
配置
-
entry
打包入口,可以是單個檔案,也可以是一個物件,或者陣列,webpack會載入entry指定的檔案,然後遞迴遍歷每個檔案的依賴,最後打包到一起,輸出到output指定的路徑
-
output
指定webpack打包之後輸出的路徑
-
resolve
配置webpack如何查詢檔案
-
如果路徑指向一個檔案
如果路徑具有副檔名,則被直接將檔案打包。
否則,將使用 [resolve.extensions]選項作為副檔名來解析,此選項告訴解析器在解析中能夠接受哪些副檔名(例如 .js, .jsx)
-
如果路徑指向一個資料夾,則採取以下步驟找到具有正確副檔名的正確檔案
如果資料夾中包含 package.json 檔案,則按照順序查詢 resolve.mainFields 配置選項中指定的欄位。並且 package.json 中的第一個這樣的欄位確定檔案路徑。
如果 package.json 檔案不存在或者 package.json 檔案中的 main 欄位沒有返回一個有效路徑,則按照順序查詢 resolve.mainFiles 配置選項中指定的檔名,看是否能在 import/require 目錄下匹配到一個存在的檔名。
副檔名通過 resolve.extensions 選項採用類似的方法進行解析。
-
module
module裡配置了針對每一種模組如何載入
-
webpack支援的模組
ES2015 import 語句
CommonJS require() 語句
AMD define 和 require 語句
css/sass/less 檔案中的 @import 語句。
樣式(
url(...)
)或 HTML 檔案(<img src=...>
)中的圖片連結(image url)
plugin
外掛用於擴充套件webpack,在外掛和loader能訪問到的webpack上下文是不一樣的,plugin可以處理loader處理不了的事情
- 常用外掛
- HtmlWebpackPlugin
- DefinePlugin
- HotModuleReplacementPlugin
- 開發
- https://doc.webpack-china.org/contribute/writing-a-plugin/\#-
loader
loader 用於載入待打包的資源,在import的時候觸發。
- 常用loader
- postcss-loader
- css-loader
- file-loader
- 開發
- https://doc.webpack-china.org/contribute/writing-a-loader
babel
babel-core
bable-register
babel-helper
babel-loader
polyfill
開發除錯
方案一:直接使用webpack-dev-server
webpack-dev-server=dev-server+webpack-dev-middleware+webpack-hot-middleware
方案二:開發伺服器+webpack-dev-middleware+webpack-hot-middleware
開發伺服器
開發伺服器一般基於express或者koa
-
webpack-dev-middleware
express中介軟體,接受客戶端的get請求,然後把webpack打包到記憶體裡的檔案返回給客戶端
-
原始碼分析
-
middleware.js---入口檔案
判斷請求是否是get請求,不是則轉到下一個中介軟體
否則讀取檔案,傳送給客戶端
-
lib
-
GetFilenameFromUrl.js
通過url取到記憶體裡的檔名
-
PathJoin.js
處理路徑
-
Shared.js
處理和webpack的互動
-
-
-
webpack-hot-middleware
啟動server-send-event伺服器,監聽服務
監聽到打包事件之後,傳送訊息給客戶端
客戶端接受到訊息後重新整理頁面
-
hot-middleware是重新整理整個頁面,如何實現增量更新
react-hot-loader
vue-loader
-
原始碼解析
middleware.js---入口檔案
client.js
client-overlay.js
helpers.js
process-update.js
測試
單元測試
vue
-
react
jest+Enzyme
e2e測試
nightwatch+selenium
puppeter
打包優化
UglifyJsPlugin
OptimizeCSSPlugin
CommonsChunkPlugin
CompressionWebpackPlugin
按需載入
部署
jenkins
nginx