全局變量引入問題
- 通過npm引入的jquery由于打包后是在閉包內(nèi)酱讶,所以不會被掛載到window對象上。
epose-loader 暴露全局的loader替饿,內(nèi)聯(lián)loader
pre:前面執(zhí)行的loader
normal: 普通的loader
內(nèi)聯(lián)的loader
post : 后置的loader
1.內(nèi)聯(lián)的方式使用:
yarn add expose-loader -D
import $ from 'expose-loader?$!jquery'
// 把jQuery$暴露到全局
2.在配置文件中使用
{
test: require.resolve('jquery'),
use: 'expose-loader?$'
}
解決在每個(gè)文件中都需要import $ from 'jquery'
的問題
在每個(gè)模塊注入$
對象
3.webpack插件
// 在每個(gè)模塊中都注入$
plugins:[
new webpack.ProvidePlugin({
'$':'jquery'
})
]
window. from 'jquery'`
防止jquery被打包,配置externals屬性(與module瞬测,plugins相同層級)
externals: {
jquery: '$'
},
總結(jié)
- expose-loader 暴露到window上
- providePlugin 給每個(gè)包提供 $
- 引入不打包的方式乔外。