我的 Web 应用程序中有几个 JavaScript 文件,这些文件以前是通过<script>
标签加载的,按照相对依赖关系的顺序排列。现在我正在通过 require.js 重新组织它们,以便积累和缩小它们以用于生产。
对于初学者,我想简单地将所有文件加载到全局(窗口)上下文中,而无需 AMD 封装:
require([
'jquery'], function() {
require([
'jquery-ui'], function() {
require([
'jquery-ui.touch-punch',
// [...]
]);
});
});
这里的想法是'jquery'
定义一个全局(窗口上下文)jQuery
变量,'jquery-ui'
设置jQuery.ui
和'jquery-ui.touch-punch'
更改jQuery.ui
(以获得更好的触摸支持)。
这在按原样运行时效果很好,即没有优化。但是,编译成一个文件并使用RequireJS 优化器缩小后,会出现以下错误:
Uncaught TypeError: Cannot read property 'mouse' of undefined
这发生在试图访问的线路上jQuery.ui.mouse
。
在浏览器控制台内部,jQuery
在窗口上下文中正确设置,但jQuery.ui
未定义。但是,手动执行require(['jquery-ui'])
确实jQuery.ui
按预期设置。
优化后 jQuery UI 的行为似乎有所不同,但我看不出究竟是如何或为什么。我究竟做错了什么?