摘要:代碼分離使用中文文檔地址點(diǎn)擊這里動態(tài)導(dǎo)入目前,類函模塊加載的語法建議整體交給。在中的是個分離點(diǎn),用來把被請求的模塊獨(dú)立成一個多帶帶的模塊。被替代因為在中使用已經(jīng)不合建議規(guī)范,因此將在版本中啟用。
代碼分離-使用import()
中文文檔地址點(diǎn)擊這里
動態(tài)導(dǎo)入目前,類函模import()塊加載的語法建議——syntax proposal整體交給ECMAScript。
ES2015(es6)加載器說明定義import()作為一個方法用來動在運(yùn)行時態(tài)加載es6模塊。
在webpack中的import()是個分離點(diǎn)——split-point,用來把被請求的模塊獨(dú)立成一個多帶帶的模塊。import()吧模塊的名字作為一個參數(shù),并且返回一個Promise: import(name)->Promise.
index.js
function determineDate() { import("moment").then(function(moment) { console.log(moment().format()); }).catch(function(err) { console.log("Failed to load moment", err); }); } determineDate();babel配合
如果你想使用babel時使用import,你需要使用syntax-dynamic-import插件(babel的插件,卸載.babelrc中),然而該差價仍停留在Stage3(第三階段),會出現(xiàn)編譯錯誤。如果建議到了說明推廣階段,那么這個標(biāo)準(zhǔn)見不被采用(指ECMAScript標(biāo)準(zhǔn)演進(jìn))。
npm install --save-dev babel-core babel-loader babel-plugin-syntax-dynamic-import babel-preset-es2015 # 如下示例,加載moment npm install --save moment
index-es2015.js
function determineDate() { import("moment") .then(moment => moment().format("LLLL")) .then(str => console.log(str)) .catch(err => console.log("Failed to load moment", err)); } determineDate();
webpack.config.js
module.exports = { entry: "./index-es2015.js", output: { filename: "dist.js", }, module: { rules: [{ test: /.js$/, exclude: /(node_modules)/, use: [{ loader: "babel-loader", //如果有這個設(shè)置則不用在添加.babelrc options: { presets: [["es2015", {modules: false}]], plugins: ["syntax-dynamic-import"] } }] }] } };
注意
使用syntax-dynamic-import插件時,如下情況將報錯。
Module build failed: SyntaxError: "import" and "export" may only appear at the top level, or (import 和 export只能在最外層,也就是不能用在函數(shù)或者塊中)
Module build failed: SyntaxError: Unexpected token, expected {
配合babel, async/await使用ES2017 async/await 配合import():
npm install --save-dev babel-plugin-transform-async-to-generator babel-plugin-transform-regenerator babel-plugin-transform-runtime
index-es2017.js
async function determineDate() { const moment = await import("moment"); return moment().format("LLLL"); } determineDate().then(str => console.log(str));
webpack.config.js
module.exports = { entry: "./index-es2017.js", output: { filename: "dist.js", }, module: { rules: [{ test: /.js$/, exclude: /(node_modules)/, use: [{ loader: "babel-loader", options: { presets: [["es2015", {modules: false}]], plugins: [ "syntax-dynamic-import", "transform-async-to-generator", "transform-regenerator", "transform-runtime" ] } }] }] } };import 替代 require.ensure?
好的方面:使用import()能夠在加載模塊失敗時進(jìn)行錯誤處理,因為返回的是個Promise(基于promise)。
警告:require.ensure可以使用參數(shù)給模塊命名,然而import目前上不具備改功能,如果你需要保留該功能很重要,可以繼續(xù)使用require.ensure。
require.ensure([], function(require) { var foo = require("./module"); }, "custom-chunk-name");System.import被替代
因為在webpack中使用System.import已經(jīng)不合建議規(guī)范,因此將在webpack版本v2.1.0-beta.28中啟用。建議使用import()。
例子https://github.com/webpack/we...
https://github.com/webpack/we...
https://github.com/webpack/we...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/82144.html
摘要:瀏覽器需要重新下載打包后的文件,即使文件的絕大部分都沒有變化。分離并且以來命名新的入口能夠緩和當(dāng)前的問題。現(xiàn)在運(yùn)行綁定的檢查結(jié)果是只是被綁定到這個綁定文件中。 分離庫代碼Code Splitting - Libraries 這個在webpack2.x中文網(wǎng)已存在,點(diǎn)擊這里 讓我們想一個簡單的應(yīng)用——momentjs,他是一個事件格式化的庫。安裝moment. npm install -...
摘要:公開路徑該條已在中文網(wǎng)存在點(diǎn)擊這里有一個非常有用的設(shè)置,允許你設(shè)置一個所有資源的基礎(chǔ)路徑在你的應(yīng)用中。使用案例這里有有些實際應(yīng)用中的案例,其中它使用的非常靈活。 公開路徑(pbulic path) 該條已在webpack2.x中文網(wǎng)存在,點(diǎn)擊這里 webpack有一個非常有用的設(shè)置,允許你設(shè)置一個所有資源的基礎(chǔ)路徑在你的應(yīng)用中。它叫做publicPath。 使用案例(Use cases...
摘要:代碼分離代碼分離是最受矚目的功能。下面有兩種代碼分離的技術(shù)。使用實現(xiàn)代碼分離是使用的方式實現(xiàn)靜待資源異步調(diào)用。通過添加,我們可以在代碼中打一個分離點(diǎn),可以以此建立一個獨(dú)立的包,包含這個點(diǎn)的所有代碼。 代碼分離(Code Splitting) 代碼分離是webpack最受矚目的功能。它允許你把你的代碼分成不同的部分分開打包,然后實現(xiàn)在需要的時候再進(jìn)行加載(按需加載提高速度)————例如用...
摘要:依賴管理該條已在中文網(wǎng)存在,點(diǎn)擊這里表達(dá)式來調(diào)用當(dāng)你的請求包含表達(dá)式,那個一個上下文環(huán)境將被創(chuàng)建。一個包含所有父文件夾和子及后代文件夾中以結(jié)尾的文件的上下文。一個函數(shù),返回一個數(shù)組,包含上下文模塊能夠處理的所有的請求。 依賴管理 Dependency Management 該條已在webpack2.x中文網(wǎng)存在,點(diǎn)擊這里 es6 modules commonjs amd 表達(dá)式...
摘要:出口影響編譯的輸出告訴怎樣編譯輸出的文件允許多個入口一個出口的情況。該選項實現(xiàn)跨域加載模塊可以的值是命名每個出口文件。不必明確絕對路徑。使用設(shè)置項,設(shè)置具體位置。僅僅命名文件名字即可。 出口Output 影響編譯的輸出告訴webpack怎樣編譯輸出的文件允許多個入口一個出口的情況。 用法 const config = { output: bundle.js }; module.e...
閱讀 920·2021-11-18 10:02
閱讀 2689·2021-11-11 16:54
閱讀 2857·2021-09-02 09:45
閱讀 717·2019-08-30 12:52
閱讀 2908·2019-08-29 14:04
閱讀 2802·2019-08-29 12:39
閱讀 526·2019-08-29 12:27
閱讀 1960·2019-08-26 13:23