關於 webpack external

來源:互聯網
上載者:User

標籤:universal   color   type   test   引用   pre   roo   amd   span   

引用UMD格式的包,

webpack.config.js 配置

externals: {
"./test1": "A",
"./test2": "B",
},

產生的UMD格式的js開頭都有這麼一段 

(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === ‘object‘ && typeof module === ‘object‘)
module.exports = factory(require("A"), require("B"));
else if(typeof define === ‘function‘ && define.amd)
define(["A", "B"], factory);
else {
var a = typeof exports === ‘object‘ ? factory(require("A"), require("B")) : factory(root["A"], root["B"]);
for(var i in a) (typeof exports === ‘object‘ ? exports : root)[i] = a[i];

}
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {


注意看紅色的兩段,
this 指向是window對象
for(var i in a)   (typeof exports === ‘object‘ ? exports : root)[i] = a[i]; 這段就很好理解了  其實就把你require要引用的對象放到 window對象上 ,所有都對象都從window的屬性取

require("A"), require("B")  到最後其實就是 window.A,window.B  而不會 是 根據moduleId取對象內的module
-------------------------------
普通模式的index.js 產生的程式碼更直接了,直接取window內容相關的A,B屬性

**/ function(module, exports) {

module.exports = A;

/***/ },
/* 2 */
/***/ function(module, exports) {

module.exports = B;

/***/ }
/******/ ]);

關於 webpack external

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.