首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webpack是如何处理这个模块垫片模式的?

webpack是如何处理这个模块垫片模式的?
EN

Stack Overflow用户
提问于 2016-08-11 07:45:04
回答 1查看 317关注 0票数 1

webpack的文档列出了一个有趣的模式,用于填充在window上设置属性的模块,比如window.XModule = {...}

https://webpack.github.io/docs/shimming-modules.html#the-file-sets-a-property-on-window-window-xmodule

代码语言:javascript
复制
require('imports?window=>{}!exports?window.XModule!./file.js')

将该模式应用于ES6,我最终得到了以下结果:

代码语言:javascript
复制
import XMODULE from 'imports?window=>{}!exports?window.XModule!./file.js'

我想了解一下,Webpack是如何处理这个声明的,具体地说,就是imports-loader部件imports?window=>{}扮演什么角色。据我所知,exports-loader基本上根据依赖关系将XMODULE设置为window.XModule。至于imports-loader,它所做的似乎就是不允许window对象被依赖项污染……但是怎么做呢?

结合exports?window.XModuleimports?window=>{}是如何工作的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 03:10:08

我找到了我问题的答案。首先,加载器的顺序很重要(在imports-loader之前是expose-loader,在exports-loader之前):

https://webpack.github.io/docs/shimming-modules.html#order-of-loaders

关于我问题中的具体例子...

'imports?window=>{}!exports?window.XModule!./file.js'

webpack将运行imports-loader,并在模块开头插入以下内容:

代码语言:javascript
复制
/*** IMPORTS FROM imports-loader ***/
var window = {};

webpack将运行exports-loader,并在模块末尾插入以下内容:

代码语言:javascript
复制
/*** EXPORTS FROM exports-loader ***/
exports["XModule"] = (window.XModule);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38885231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档