摘要:這個(gè)就是把的換成了完整信息的形式特點(diǎn)結(jié)合了和的特點(diǎn),將每個(gè)模塊包起來(lái),并且最后添加的信息,可以知道行列,可以為模塊緩存它可以更快的重建。最終的只有一份,它是對(duì)生成的進(jìn)行簡(jiǎn)化,然后再次生成的。
eval
每個(gè) module 會(huì)通過(guò) eval() 來(lái)執(zhí)行,并在后面添加?//# sourceURL
webpackJsonp([1],[ function(module,exports,__webpack_require__){ eval( ... //# sourceURL=webpack:///./src/js/index.js?" ) }, function(module,exports,__webpack_require__){ eval( ... //# sourceURL=webpack:///./src/static/css/app.less?./~/.npminstall/css-loader/0.23.1/css-loader!./~/.npminstall/postcss-loader/1.1.1/postcss-loader!./~/.npminstall/less-loader/2.2.3/less-loader" ) }, function(module,exports,__webpack_require__){ eval( ... //# sourceURL=webpack:///./src/tmpl/appTemplate.tpl?" ) }, ...])
eval有最好的性能,但是它只映射到每個(gè)模塊源碼文件,沒(méi)有行列信息。
source-map打包代碼同時(shí)創(chuàng)建一個(gè)新的 sourcemap 文件, 并在打包文件的末尾添加?//# sourceURL?注釋行告訴 JS 引擎文件在哪兒
webpackJsonp([1],[ function(e,t,i){...}, function(e,t,i){...}, function(e,t,i){...}, function(e,t,i){...}, ... ]) //# sourceMappingURL=index.js.map
source-map?不能為模塊和需要重新生成的代碼塊緩存SourceMaps,它適用于生產(chǎn)環(huán)境。
inline-source-map為每一個(gè)文件添加 sourcemap 的 DataUrl,注意這里的文件是打包前的每一個(gè)文件而不是最后打包出來(lái)的,同時(shí)這個(gè) DataUrl 是包含一個(gè)文件完整 souremap 信息的 Base64 格式化后的字符串,而不是一個(gè) url
webpackJsonp([1],[ function(e,t,i){...}, function(e,t,i){...}, function(e,t,i){...}, function(e,t,i){...}, ... ]) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9...
可以看到末尾的注釋 sourceMap 作為 DataURL 的形式被內(nèi)嵌進(jìn)了 bundle 中,由于 sourceMap 的所有信息都被加到了 bundle 中,整個(gè) bundle 文件變得碩大無(wú)比。
eval-source-map這個(gè)就是把?eval?的 sourceURL 換成了完整 souremap 信息的 DataUrl
webpackJsonp([1],[ function(module,exports,__webpack_require__){ eval( ... //# sourceMappingURL=data:application/json;charset=utf-8;base64,... ) }, function(module,exports,__webpack_require__){ eval( ... //# sourceMappingURL=data:application/json;charset=utf-8;base64,... ) }, function(module,exports,__webpack_require__){ eval( ... //# sourceMappingURL=data:application/json;charset=utf-8;base64,... ) }, ... ]);
結(jié)合了eval和source-map的特點(diǎn),eval將每個(gè)模塊包起來(lái),并且最后添加source-map的base64信息,可以知道行列,可以為模塊緩存它可以更快的重建SourceMaps。
cheap-source-map不包含列信息,不包含 loader 的 sourcemap,(譬如 babel 的 sourcemap)
不包含行信息,會(huì)減小map大小,不支持loader的sourcemap,比如從jsx映射到j(luò)s,最終你只能訪(fǎng)問(wèn)到j(luò)s文件,看不了源碼的jsx文件。
cheap-module-source-map不包含列信息,同時(shí) loader 的 sourcemap 也被簡(jiǎn)化為只包含對(duì)應(yīng)行的。最終的 sourcemap 只有一份,它是 webpack 對(duì) loader 生成的 sourcemap 進(jìn)行簡(jiǎn)化,然后再次生成的。
相較于cheap-source-map,可以支持loader的sourcemap
hidden-source-map和 source-map 一樣,但不會(huì)在 bundle 末尾追加注釋.
webpackJsonp([1],[ function(e,t,i){...}, function(e,t,i){...}, function(e,t,i){...}, function(e,t,i){...}, ... ])
與 source-map 相比少了末尾的注釋?zhuān)?output 目錄下的?index.js.map?沒(méi)有少
調(diào)試注1:webpack 不僅支持這 7 種,而且它們還是可以任意組合上面的 eval、inline、hidden 關(guān)鍵字,就如文檔所說(shuō),你可以設(shè)置 souremap 選項(xiàng)為 cheap-module-inline-source-map。
注2:如果你的 modules 里面已經(jīng)包含了 SourceMaps ,你需要用?source-map-loader來(lái)和合并生成一個(gè)新的 SourceMaps?
github上關(guān)于調(diào)試的問(wèn)題:Source Maps don"t work on Chrome
chrome里能否調(diào)試源碼 x:不行 o:可以
eval-source-map x(刷新斷點(diǎn)被忽略)
cheap-source-map x(不是源碼)
cheap-module-eval-source-map x(刷新斷點(diǎn)被忽略)
cheap-module-source-map x(斷點(diǎn)位置不對(duì))
source-map o
inline-source-map o
總結(jié)eval: 更快
inline:內(nèi)聯(lián)
cheap:不含列信息,不支持loader sourcemap(譬如 babel 的 sourcemap,從jsx到j(luò)s的映射)
cheap-module:不含列信息,支持loader sourcemap
source-map:包含行列信息,支持loader sourcemap
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82975.html
摘要:結(jié)合的具體使用我們一般是使用進(jìn)行安裝的,這里我為大家推薦一款淘寶出的,這個(gè)和差不多,但是比安裝的要快很多安裝命令搭建環(huán)境初始化一個(gè)文件安裝全局安裝局部安裝安裝來(lái)把格式的代碼編譯成安裝來(lái)轉(zhuǎn)譯代碼安裝轉(zhuǎn)移的插件, React結(jié)合webpack的具體使用 我們一般是使用npm進(jìn)行安裝的,這里我為大家推薦一款淘寶出的cnpm,這個(gè)和npm差不多,但是比npm安裝的要快很多; 安裝命令 npm ...
摘要:結(jié)合的具體使用我們一般是使用進(jìn)行安裝的,這里我為大家推薦一款淘寶出的,這個(gè)和差不多,但是比安裝的要快很多安裝命令搭建環(huán)境初始化一個(gè)文件安裝全局安裝局部安裝安裝來(lái)把格式的代碼編譯成安裝來(lái)轉(zhuǎn)譯代碼安裝轉(zhuǎn)移的插件, React結(jié)合webpack的具體使用 我們一般是使用npm進(jìn)行安裝的,這里我為大家推薦一款淘寶出的cnpm,這個(gè)和npm差不多,但是比npm安裝的要快很多; 安裝命令 npm ...
摘要:結(jié)合的具體使用我們一般是使用進(jìn)行安裝的,這里我為大家推薦一款淘寶出的,這個(gè)和差不多,但是比安裝的要快很多安裝命令搭建環(huán)境初始化一個(gè)文件安裝全局安裝局部安裝安裝來(lái)把格式的代碼編譯成安裝來(lái)轉(zhuǎn)譯代碼安裝轉(zhuǎn)移的插件, React結(jié)合webpack的具體使用 我們一般是使用npm進(jìn)行安裝的,這里我為大家推薦一款淘寶出的cnpm,這個(gè)和npm差不多,但是比npm安裝的要快很多; 安裝命令 npm ...
摘要:最近整理一下針對(duì)的調(diào)試方法。一是的調(diào)試的插件,可以直接顯示組件現(xiàn)在的狀態(tài)。最終的只有一份,它是對(duì)生成的進(jìn)行簡(jiǎn)化,然后再次生成的。關(guān)于的標(biāo)記是不起作用的需要手動(dòng)加入命令 問(wèn)題描述 vue 經(jīng)過(guò)webpack的打包壓縮之后,通過(guò)source看到的代碼已經(jīng)面目全非,無(wú)法輕易對(duì)代碼進(jìn)行調(diào)試。最近整理一下針對(duì)vue的調(diào)試方法。 一、 devtools devtools是Chrome的調(diào)試vue的...
摘要:文件就是記錄了從源代碼文件到壓縮文件的一個(gè)代碼對(duì)應(yīng)關(guān)系記錄表,通過(guò)壓縮文件和文件可以原原本本找出源代碼文件。 細(xì)說(shuō) js 壓縮、sourcemap、通過(guò) sourcemap 查找原始報(bào)錯(cuò)信息 1. js 壓縮 js 壓縮對(duì)前端開(kāi)發(fā)者來(lái)說(shuō)是一門(mén)必修課。 一般來(lái)說(shuō),壓縮 js 主要出于以下兩個(gè)目的: 減小代碼體積,加快前端資源加載速度 保護(hù)源代碼不被別人獲取 壓縮 js 使用的工具庫(kù):...
閱讀 2071·2021-11-11 16:54
閱讀 2140·2019-08-30 15:55
閱讀 3642·2019-08-30 15:54
閱讀 419·2019-08-30 15:44
閱讀 2258·2019-08-30 10:58
閱讀 457·2019-08-26 10:30
閱讀 3077·2019-08-23 14:46
閱讀 3248·2019-08-23 13:46