詳解webpack require.ensure與require AMD的區(qū)別
簡介
require-ensure和require-amd的區(qū)別:
require-amd
說明: 同AMD規(guī)范的require函數(shù),使用時(shí)傳遞一個(gè)模塊數(shù)組和回調(diào)函數(shù),模塊都被下載下來且都被執(zhí)行后才執(zhí)行回調(diào)函數(shù)
語法: require(dependencies: String[], [callback: function(...)])
參數(shù)
- dependencies: 模塊依賴數(shù)組
- callback: 回調(diào)函數(shù)
require-ensure
說明: require.ensure在需要的時(shí)候才下載依賴的模塊,當(dāng)參數(shù)指定的模塊都下載下來了(下載下來的模塊還沒執(zhí)行),便執(zhí)行
參數(shù)指定的回調(diào)函數(shù)。require.ensure會(huì)創(chuàng)建一個(gè)chunk,且可以指定該chunk的名稱,如果這個(gè)chunk名已經(jīng)存在了,則將本次依賴的模塊合并到已經(jīng)存在的chunk中,最后這個(gè)chunk在webpack構(gòu)建的時(shí)候會(huì)單獨(dú)生成一個(gè)文件。
語法: require.ensure(dependencies: String[], callback: function([require]), [chunkName: String])
- dependencies: 依賴的模塊數(shù)組
- callback: 回調(diào)函數(shù),該函數(shù)調(diào)用時(shí)會(huì)傳一個(gè)require參數(shù)
- chunkName: 模塊名,用于構(gòu)建時(shí)生成文件時(shí)命名使用
注意點(diǎn):requi.ensure的模塊只會(huì)被下載下來,不會(huì)被執(zhí)行,只有在回調(diào)函數(shù)使用require(模塊名)后,這個(gè)模塊才會(huì)被執(zhí)行。
示例
require-amd
源代碼
webpack.config.amd.js
var path = require("path");
module.exports = {
entry: "./example.amd.js",
output: {
path: path.join(__dirname, "amd"),
filename: "[name].bundle.js",
chunkFilename: "[id].chunk.js"
}
};
example.amd.js
require(["./module1"], function(module1) {
console.log("aaa");
var module2 = require("./module2");
console.log("bbb");
});
module1.js
console.log("module1");
module.exports = 1;
module2.js
console.log("module2");
module.exports = 2;
構(gòu)建結(jié)果
命令行中運(yùn)行webpack --config webpack.config.amd.js
- main.bundle.js
- example.amd.js
- 1.chunk.js
- module1.js
- module2.js
運(yùn)行結(jié)果
瀏覽器中運(yùn)行amd/index.html,控制臺(tái)輸出:
module1 aaa module2 bbb
require-ensure
源代碼
webpack.config.ensure.js
var path = require("path");
module.exports = {
entry: "./example.ensure.js",
output: {
path: path.join(__dirname, "ensure"),
filename: "[name].bundle.js",
chunkFilename: "[name].chunk.js"
}
};
example.ensure.js
require.ensure(["./module1"], function(require) {
console.log("aaa");
var module2 = require("./module2");
console.log("bbb");
require("./module1");
}, 'test');
module1.js
同上
module2.js
同上
構(gòu)建結(jié)果
命令行中運(yùn)行webpack --config webpack.config.ensure.js
- main.bundle.js
- example.amd.js
- 1.chunk.js
- module1.js
- module2.js
運(yùn)行結(jié)果
瀏覽器中運(yùn)行ensure/index.html,控制臺(tái)輸出:
aaa
module2
bbb
module1
require-ensure-chunk
源代碼
webpack.config.ensure.chunk.js
var path = require("path");
module.exports = {
entry: "./example.ensur.chunk.js",
output: {
path: path.join(__dirname, "ensure-chunk"),
filename: "[name].bundle.js",
chunkFilename: "[name].chunk.js"
}
};
example.ensur.chunk.js
require.ensure(["./module1"], function(require) {
console.log("aaa");
require("./module1");
console.log("bbb");
}, 'common');
require.ensure(["./module2"], function(require) {
console.log("ccc");
require("./module2");
console.log("ddd");
}, 'common');
module1.js
同上
module2.js
同上
構(gòu)建結(jié)果
命令行中運(yùn)行webpack --config webpack.config.ensure.js
- main.bundle.js
- example.amd.js
- 1.chunk.js
- module1.js
- module2.js
運(yùn)行結(jié)果
瀏覽器中運(yùn)行ensure/index.html,控制臺(tái)輸出:
aaa
module1
bbb
ccc
1module2
ddd
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript base64編碼實(shí)現(xiàn)代碼
Javascript base64編碼實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-12-12
JavaScript實(shí)現(xiàn)圖像壓縮的方法
使用 JavaScript 和 canvas 壓縮圖像可以使用 canvas 的 drawImage() 方法將圖像繪制到 canvas 上,然后使用 toDataURL() 方法將圖像轉(zhuǎn)換為 Data URL 形式,這篇文章主要介紹了JavaScript 圖像壓縮的相關(guān)資料,需要的朋友可以參考下2023-01-01
js對(duì)列表中第一個(gè)值處理與jsp頁面對(duì)列表中第一個(gè)值處理的區(qū)別詳解
本文是對(duì)js對(duì)列表中第一個(gè)值處理與jsp頁面對(duì)列表中第一個(gè)值處理的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11
uniapp踩坑實(shí)戰(zhàn)之文件查找失敗:'uview-ui'?at?main.js解決辦法
這篇文章主要給大家介紹了關(guān)于uniapp踩坑實(shí)戰(zhàn)之文件查找失敗:'uview-ui'?at?main.js的解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
js實(shí)現(xiàn)顯示手機(jī)號(hào)碼效果
本文主要介紹了js實(shí)現(xiàn)顯示手機(jī)號(hào)碼效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
CKEditor擴(kuò)展插件:自動(dòng)排版功能autoformat插件實(shí)現(xiàn)方法詳解
這篇文章主要介紹了CKEditor擴(kuò)展插件:自動(dòng)排版功能autoformat插件實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了CKEditor擴(kuò)展插件實(shí)現(xiàn)自動(dòng)排版功能的autoformat插件具體定義、配置與使用技巧,需要的朋友可以參考下2020-02-02
javascript瀑布流布局實(shí)現(xiàn)方法詳解
這篇文章主要介紹了javascript瀑布流布局實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了JavaScript實(shí)現(xiàn)瀑布流布局的樣式與具體功能代碼,需要的朋友可以參考下2016-02-02
JS獲取指定月份的天數(shù)兩種實(shí)現(xiàn)方法
這篇文章主要介紹了JS獲取指定月份的天數(shù)兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2018-06-06

