摘要:重要特性枚舉特性增加了對特性的支持。重要特性另一個就是基于靜態模塊分析僅支持標準寫法。這樣之后整體只能通過的方式。另外在使用過程中默認是將和轉為所以需要關閉預設功能。這樣做的目的就是為了項目工程化實現大項目的分工協作提高開發效率。
引言
這里是webpack official提供的一到二的升級指南,二兼容一的寫法,給我的感覺是二的寫法更規范,使用起來也比較簡潔。
重要特性枚舉 特性1webpack2增加了對es6特性的支持。支持import和export寫法。之前需要通過babel來弄這個。
重要特性tree-shaking(另一個就是rollup),基于es6靜態模塊分析(僅支持標準寫法)。大致原理就是通過分析js的AST,依賴檢查等步驟,建立一個"對象依賴樹",從而將被使用和被引用的的
對象抽出,合成最小可用程序集。
export function A() { } export function B() { } export default { "A":A, "B":B, }
上面是反模式寫法,相當于export default是把后面變量先賦值給default在輸出,輸出的是對象,沒法利用ES6模塊系統的多輸入多輸出特性。
正規寫法,分別輸出。這樣之后整體import只能通過import * as XXX的方式。
// export { // "A":A, // "B":B, // }
做了個demo (case1),實驗結果如下,效果還是比較明顯的。
說一下應用場景,由于有些第三方庫,是編譯好的commonjs格式,雖然可以模塊化引入加載,但是沒法tree-shaking,除非你有未編譯的es6 source。
另外在使用過程中,babel 默認是將import和export轉為require,所以需要關閉預設功能。
["env", {"modules": false}]
另外我想說的在做這個demo工程中,發現開啟tree-shaking后會標記無用代碼,但是不會刪除,要做到真正的DCE,還需要進行Uglify處理。
第二個應用場景就是有利于組件化開發,下面這個截圖中是平時使用到的vue component,每個component集成了html、js、css。可以作為多帶帶組件存在,
這些組件既具有重用性,同時也可以利用es6的模塊化機制結合webpack2,實現組件之間的依賴。這樣做的目的就是為了項目工程化,實現大項目的分工協作,提高開發效率。
loaders改名為rules,且寫loader時不能缺少后綴, 針對loader增加option參數。提倡這樣做。
options: { cacheDirectory: true, presets: [ ["es2015", {modules: false}] ] }
舊版loader連接器寫法
loader: "style-loader!css-loader!less-loader"。
下面是我項目中的寫法,之前還遇到個坑,最后那一項拆開了就error了,這種寫法沒條理性,不易閱讀,不推薦。
{ test: /.styl$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!stylus-loader") }
新webpack2連接器寫法,非常好,簡介明了。
use: [
"style-loader",
"css-loader",
"less-loader"
]
resolve.extensions配置項將不再要求強制轉入一個空字符串,下面是我使用的配置。
resolve: { extensions: [".js", ".css",".sass", ".scss", ".less", ".vue"], },
原先的話第一個為空,現在被移動到resolve.enforceExtension。
特性4json-loader在2中已經內置,讀取json文件不用加loader。
取消module.preLoaders,具體用法如下所示
preLoaders: [{ test: /.js$/, loader: "eslint-loader",//webpack1寫法 exclude: /node_modules/ }] ------------------------------------------------- rules: [{ test: /.js$/, loader: "eslint-loader", exclude: /node_modules/, enforce: "pre" //webpack2寫法 }特性5
1系列的ExtractTextPlugin不兼容wp2,需多帶帶安裝ExtractTextPlugin的v2版本
module: { rules: [ { test: /.css$/, - loader: ExtractTextPlugin.extract("style-loader", "css-loader", { publicPath: "/dist" }) + use: ExtractTextPlugin.extract({ + fallback: "style-loader", + use: "css-loader", + publicPath: "/dist" + }) } ] } -------------------------------------------------------------------------------------------------- plugins: [ - new ExtractTextPlugin("bundle.css", { allChunks: true, disable: false }) + new ExtractTextPlugin({ + filename: "bundle.css", + disable: false, + allChunks: true + }) ]tips
在寫這個的過程中寫了個腳手架基于webpack2,自己以后項目開發打算就基于這個,還需要完善。
在寫這個過程中遇到幾個問題:
http://yeoman.io/generators/ 顯示不出來,說是one hour synchronize可是超過了一個小時還是沒看到。
在此的建議就是直接install yo一下試試看能不能用,不要干等著
npm run start而不是直接webpack-dev-server,前者基于當前package.json中的版本,后者是基于系統版本。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86957.html
摘要:它的行為和的方法相似,用來注冊一個處理函數監聽器,來在信號事件發生時做一些事情他最終還是調用進行存儲。而就全部取出來執行。總結上面這些知識是理解插件和運行原理的前置條件更多內容待下次分解參考源碼版本說明參考鏈接 引言 去年3月的時候當時寫了一篇webpack2-update之路,到今天webpack已經到了4.2,更新挺快的,功能也在不斷的完善,webpack4特性之一就是零配置, w...
摘要:但是對于結構體中的和字段我們一直都沒有詳細介紹過,而這兩個字段其實是和變量之間賦值的原理有著密切的關系的。 上周我們從底層的角度介紹了php變量從生成->常量賦值->銷毀的完整生命周期(不了解的同學可以翻看一下前面的文章php底層原理之變量(一)),但是我們留了一個思考,不知道大家有答案了沒,變量之間的賦值在底層又是如何實現的呢? 變量之間賦值 php變量的zval結構,我們已經介紹了...
摘要:總結垃圾回收機制以的引用計數機制為基礎以前只有該機制同時使用根緩沖區機制,當發現有存在循環引用的時,就會把其投入到根緩沖區,當根緩沖區達到配置文件中的指定數量后,就會進行垃圾回收,以此解決循環引用導致的內存泄漏問題開始引入該機制 php垃圾回收機制,對于PHPer來說是一個不陌生但是又不是很熟悉的內容。那么php是怎么實現對不需要的內存進行回收的呢? php變量的內部存儲結構 首先還是...
閱讀 2312·2021-11-17 09:33
閱讀 843·2021-10-13 09:40
閱讀 573·2019-08-30 15:54
閱讀 778·2019-08-29 15:38
閱讀 2417·2019-08-28 18:15
閱讀 2475·2019-08-26 13:38
閱讀 1841·2019-08-26 13:36
閱讀 2129·2019-08-26 11:36