摘要:代碼分離使用中文文檔地址點擊這里動態(tài)導入目前,類函模塊加載的語法建議整體交給。在中的是個分離點,用來把被請求的模塊獨立成一個多帶帶的模塊。被替代因為在中使用已經不合建議規(guī)范,因此將在版本中啟用。
代碼分離-使用import()
中文文檔地址點擊這里
動態(tài)導入目前,類函模import()塊加載的語法建議——syntax proposal整體交給ECMAScript。
ES2015(es6)加載器說明定義import()作為一個方法用來動在運行時態(tài)加載es6模塊。
在webpack中的import()是個分離點——split-point,用來把被請求的模塊獨立成一個多帶帶的模塊。import()吧模塊的名字作為一個參數,并且返回一個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(第三階段),會出現編譯錯誤。如果建議到了說明推廣階段,那么這個標準見不被采用(指ECMAScript標準演進)。
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", //如果有這個設置則不用在添加.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只能在最外層,也就是不能用在函數或者塊中)
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()能夠在加載模塊失敗時進行錯誤處理,因為返回的是個Promise(基于promise)。
警告:require.ensure可以使用參數給模塊命名,然而import目前上不具備改功能,如果你需要保留該功能很重要,可以繼續(xù)使用require.ensure。
require.ensure([], function(require) { var foo = require("./module"); }, "custom-chunk-name");System.import被替代
因為在webpack中使用System.import已經不合建議規(guī)范,因此將在webpack版本v2.1.0-beta.28中啟用。建議使用import()。
例子https://github.com/webpack/we...
https://github.com/webpack/we...
https://github.com/webpack/we...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82144.html
摘要:瀏覽器需要重新下載打包后的文件,即使文件的絕大部分都沒有變化。分離并且以來命名新的入口能夠緩和當前的問題。現在運行綁定的檢查結果是只是被綁定到這個綁定文件中。 分離庫代碼Code Splitting - Libraries 這個在webpack2.x中文網已存在,點擊這里 讓我們想一個簡單的應用——momentjs,他是一個事件格式化的庫。安裝moment. npm install -...
摘要:公開路徑該條已在中文網存在點擊這里有一個非常有用的設置,允許你設置一個所有資源的基礎路徑在你的應用中。使用案例這里有有些實際應用中的案例,其中它使用的非常靈活。 公開路徑(pbulic path) 該條已在webpack2.x中文網存在,點擊這里 webpack有一個非常有用的設置,允許你設置一個所有資源的基礎路徑在你的應用中。它叫做publicPath。 使用案例(Use cases...
摘要:代碼分離代碼分離是最受矚目的功能。下面有兩種代碼分離的技術。使用實現代碼分離是使用的方式實現靜待資源異步調用。通過添加,我們可以在代碼中打一個分離點,可以以此建立一個獨立的包,包含這個點的所有代碼。 代碼分離(Code Splitting) 代碼分離是webpack最受矚目的功能。它允許你把你的代碼分成不同的部分分開打包,然后實現在需要的時候再進行加載(按需加載提高速度)————例如用...
摘要:依賴管理該條已在中文網存在,點擊這里表達式來調用當你的請求包含表達式,那個一個上下文環(huán)境將被創(chuàng)建。一個包含所有父文件夾和子及后代文件夾中以結尾的文件的上下文。一個函數,返回一個數組,包含上下文模塊能夠處理的所有的請求。 依賴管理 Dependency Management 該條已在webpack2.x中文網存在,點擊這里 es6 modules commonjs amd 表達式...
摘要:出口影響編譯的輸出告訴怎樣編譯輸出的文件允許多個入口一個出口的情況。該選項實現跨域加載模塊可以的值是命名每個出口文件。不必明確絕對路徑。使用設置項,設置具體位置。僅僅命名文件名字即可。 出口Output 影響編譯的輸出告訴webpack怎樣編譯輸出的文件允許多個入口一個出口的情況。 用法 const config = { output: bundle.js }; module.e...
閱讀 813·2021-11-18 10:02
閱讀 2503·2021-11-11 16:54
閱讀 2750·2021-09-02 09:45
閱讀 654·2019-08-30 12:52
閱讀 2774·2019-08-29 14:04
閱讀 2745·2019-08-29 12:39
閱讀 448·2019-08-29 12:27
閱讀 1887·2019-08-26 13:23