假设我有2个入口点:login
和main
。我想这是很普通的配置。
我正在使用Webpack 4,并通过splitChunks
提取捆绑包common
,其中两个入口点均引用了模块。 jQuery
是其中一个模块(如捆绑分析器所示)。
所以最后我有3个脚本:login.js
,main.js
和common.bundle.js
。
我使用的expose-loader
应该足够了,但是我在两个入口点都有这行:
import $ from 'jquery';
window.$ = $;
window.jQuery = $;
在我的HTML页面中,我使用以下布局(该代码几乎是伪的,例如):
<html>
<head>
<script src='common.bundle.js' />
<script>console.log('head', Object.assign({}, window));</script>
<script>
...some logic dependent on jQuery
</script>
</head>
<body>
<app />
<script>console.log('before entry', Object.assign({}, window));</script>
<script src='login.js' />
<script>console.log('after entry', Object.assign({}, window));</script>
</body>
</html>
页面加载后,window.$
和head
中没有before entry
,只有after entry
。
所以我猜想这个暴露的库只在入口点之后才可见,在某些情况下可能是很合逻辑的,但是在我看来,这是一个真正的痛苦...
那么,有什么主意,我怎么能在捆绑了捆绑包之后立即制作jQuery globar?
更新
添加此initial: ['jquery', 'angular'],
作为入口点并在common.bundle.js
之后立即引用它可以解决问题,但这似乎并不正确。