我正在将 RequireJS 集成到 CMS 中,因此我将其放在页面模板的底部:
<html>
<body>
{Placeholder1}
<script src="scripts/require.js" data-main="scripts/main"></script>
{Placeholder2}
</body>
</html>
然后在每个页面上,我想创建一个利用 RequireJS 的函数。所以我试着把它放在页面底部:
<html>
<body>
<h1>Home</h1>
<div class="slider">Slider content</div>
<script src="scripts/require.js" data-main="scripts/main"></script>
<script type="text/javascript">
require([
'jquery',
'utils',
'slider'
], function ($, utils, slider) {
slider.start();
});
</script>
</body>
</html>
但我在 jquery、utils 和滑块 js 文件上得到 404。似乎它没有读取我拥有的 main.js 配置:
require.config({
paths: {
jquery: 'libs/jquery-1.8.1.min',
utils: 'libs/utils',
slider: 'libs/jquery.slider.min'
},
shim: {
slider: ['jquery']
}
});
require([ 'utils' ], function (utils) {
utils.init();
});
我尝试在页眉中加载 RequireJS 和 main,但结果不一致。有时 jquery、utils 和 slider 会及时加载,有时则不会。就好像页面底部的内联“require”不知道页面上的主要 RequireJS 或依赖规则,但是我的断点在 main.js 中命中,所以我知道它正在被调用。是因为 main.js 是异步加载的,但是页面底部的内联“require”块是在页面渲染时加载的?我该如何解决这个问题?
我之前成功使用过 RequireJS,但没有使用 CMS。我总是使用“定义”并且总是异步调用模块,但从来不需要像这样内联调用 RequireJS 函数。关于正确方法的任何想法?