猛跑小豬
2018-10-09 13:19:59
1.require.ensure(['./a'],function(){ var a = require('./a')
})2.上面的依賴有必要引入么?反正這里還是要 require,它還不如下面這樣require.ensure(['./a'],function(a){ // 在這里用到 a, 不需要再 require
})3.還有另外一個(gè)種用法require.ensure([
],function(){ var a = require('./a');
})文檔只是說如果加入?yún)?shù), callback 會在依賴加載后在執(zhí)行但是打包后發(fā)現(xiàn)無論是 1 還是 3, a 都會被打包到 chunk 中(有無依賴).那么這個(gè)第一個(gè)參數(shù):依賴加不加入有什么影響?1 和 3 哪個(gè)是同步?哪個(gè)是異步?
1 回答

寶慕林4294392
TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
require.ensure都是commonjs異步加載, 不存在你說的哪個(gè)同步哪個(gè)異步
分為二種情況使用:
情況一:
require.ensure([], function(require){ require('./a.js'); });
此時(shí)會單獨(dú)打包出一個(gè)js文件,沒有自定義名稱的話,會被命名為1.js(有hash時(shí)候會帶上md5)
情況二:
require.ensure(['./a.js'], function(require) { require('./b.js'); });
1、此時(shí)a.js作為依賴被加載,但是沒有被執(zhí)行(官方文檔說的only loads the modules)
2、a.js和b.js會被打包成一個(gè)文件。
3、回調(diào)函數(shù)里只require了b.js,只有b.js的內(nèi)容會被執(zhí)行。
4、如果你需要使用a.js的內(nèi)容,需要再加上require('./a.js')
最后require.ensure主要是為了區(qū)別require-AMD的寫法
require(["./a.js"], function(a) { var b = require("./b.js"); });
在AMD的模式中,[]里的內(nèi)容a會被先下載并立即執(zhí)行,再接著執(zhí)行回調(diào)函數(shù)的內(nèi)容b
添加回答
舉報(bào)
0/150
提交
取消