webpack打包是以文件为单位,每个文件会包装一个自执行函数,所以各个文件中的变量是不会污染的,比如两个文件a.js和b.js。有如下代码。
//a.js
let name = "a文件"
//b.js
let name = "b文件"
这时候当a.js文件和b.js文件相互引用时,是不会受到影响的,这种保护机制避免了局部变量对全局的污染。
但有时我们可能真的需要引入一个全局变量供全局使用,比如引入一个‘jquery‘使用,这个时候在一个文件直接引用,
受到webpack模块化的保护机制,是不能在其他文件使用的,针对这个问题,就出现了expose-loader。
1:版本: expose-loader@0.0.7
安装$ npm install expose-loader@0.0.7 --save-dev
方案一,内联使用expose-loader:
引入:
require语句:
require('expose-loader?$!jquery');
improt语句:
import "expose-loader?$!jquery";
使用:
这个时候在其他文件中就可以通过$。
方案二,以普通loader的使用方式在webpack.config.js中配置
第1步配置:
module: {
rules: [
{
test: requir