摘要:代碼分離使用中文文檔地址點(diǎn)擊這里動(dòng)態(tài)導(dǎo)入目前,類函模塊加載的語法建議整體交給。在中的是個(gè)分離點(diǎn),用來把被請(qǐng)求的模塊獨(dú)立成一個(gè)多帶帶的模塊。被替代因?yàn)樵谥惺褂靡呀?jīng)不合建議規(guī)范,因此將在版本中啟用。
代碼分離-使用import()
中文文檔地址點(diǎn)擊這里
動(dòng)態(tài)導(dǎo)入目前,類函模import()塊加載的語法建議——syntax proposal整體交給ECMAScript。
ES2015(es6)加載器說明定義import()作為一個(gè)方法用來動(dòng)在運(yùn)行時(shí)態(tài)加載es6模塊。
在webpack中的import()是個(gè)分離點(diǎn)——split-point,用來把被請(qǐng)求的模塊獨(dú)立成一個(gè)多帶帶的模塊。import()吧模塊的名字作為一個(gè)參數(shù),并且返回一個(gè)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時(shí)使用import,你需要使用syntax-dynamic-import插件(babel的插件,卸載.babelrc中),然而該差價(jià)仍停留在Stage3(第三階段),會(huì)出現(xiàn)編譯錯(cuò)誤。如果建議到了說明推廣階段,那么這個(gè)標(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", //如果有這個(gè)設(shè)置則不用在添加.babelrc options: { presets: [["es2015", {modules: false}]], plugins: ["syntax-dynamic-import"] } }] }] } };
注意
使用syntax-dynamic-import插件時(shí),如下情況將報(bào)錯(cuò)。
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()能夠在加載模塊失敗時(shí)進(jìn)行錯(cuò)誤處理,因?yàn)榉祷氐氖莻€(gè)Promise(基于promise)。
警告:require.ensure可以使用參數(shù)給模塊命名,然而import目前上不具備改功能,如果你需要保留該功能很重要,可以繼續(xù)使用require.ensure。
require.ensure([], function(require) { var foo = require("./module"); }, "custom-chunk-name");System.import被替代
因?yàn)樵趙ebpack中使用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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82144.html
摘要:瀏覽器需要重新下載打包后的文件,即使文件的絕大部分都沒有變化。分離并且以來命名新的入口能夠緩和當(dāng)前的問題?,F(xiàn)在運(yùn)行綁定的檢查結(jié)果是只是被綁定到這個(gè)綁定文件中。 分離庫代碼Code Splitting - Libraries 這個(gè)在webpack2.x中文網(wǎng)已存在,點(diǎn)擊這里 讓我們想一個(gè)簡(jiǎn)單的應(yīng)用——momentjs,他是一個(gè)事件格式化的庫。安裝moment. npm install -...
摘要:公開路徑該條已在中文網(wǎng)存在點(diǎn)擊這里有一個(gè)非常有用的設(shè)置,允許你設(shè)置一個(gè)所有資源的基礎(chǔ)路徑在你的應(yīng)用中。使用案例這里有有些實(shí)際應(yīng)用中的案例,其中它使用的非常靈活。 公開路徑(pbulic path) 該條已在webpack2.x中文網(wǎng)存在,點(diǎn)擊這里 webpack有一個(gè)非常有用的設(shè)置,允許你設(shè)置一個(gè)所有資源的基礎(chǔ)路徑在你的應(yīng)用中。它叫做publicPath。 使用案例(Use cases...
摘要:代碼分離代碼分離是最受矚目的功能。下面有兩種代碼分離的技術(shù)。使用實(shí)現(xiàn)代碼分離是使用的方式實(shí)現(xiàn)靜待資源異步調(diào)用。通過添加,我們可以在代碼中打一個(gè)分離點(diǎn),可以以此建立一個(gè)獨(dú)立的包,包含這個(gè)點(diǎn)的所有代碼。 代碼分離(Code Splitting) 代碼分離是webpack最受矚目的功能。它允許你把你的代碼分成不同的部分分開打包,然后實(shí)現(xiàn)在需要的時(shí)候再進(jìn)行加載(按需加載提高速度)————例如用...
摘要:依賴管理該條已在中文網(wǎng)存在,點(diǎn)擊這里表達(dá)式來調(diào)用當(dāng)你的請(qǐng)求包含表達(dá)式,那個(gè)一個(gè)上下文環(huán)境將被創(chuàng)建。一個(gè)包含所有父文件夾和子及后代文件夾中以結(jié)尾的文件的上下文。一個(gè)函數(shù),返回一個(gè)數(shù)組,包含上下文模塊能夠處理的所有的請(qǐng)求。 依賴管理 Dependency Management 該條已在webpack2.x中文網(wǎng)存在,點(diǎn)擊這里 es6 modules commonjs amd 表達(dá)式...
摘要:出口影響編譯的輸出告訴怎樣編譯輸出的文件允許多個(gè)入口一個(gè)出口的情況。該選項(xiàng)實(shí)現(xiàn)跨域加載模塊可以的值是命名每個(gè)出口文件。不必明確絕對(duì)路徑。使用設(shè)置項(xiàng),設(shè)置具體位置。僅僅命名文件名字即可。 出口Output 影響編譯的輸出告訴webpack怎樣編譯輸出的文件允許多個(gè)入口一個(gè)出口的情況。 用法 const config = { output: bundle.js }; module.e...
閱讀 850·2021-11-18 10:02
閱讀 2598·2021-11-11 16:54
閱讀 2794·2021-09-02 09:45
閱讀 682·2019-08-30 12:52
閱讀 2823·2019-08-29 14:04
閱讀 2776·2019-08-29 12:39
閱讀 480·2019-08-29 12:27
閱讀 1914·2019-08-26 13:23