Я интегрирую 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>
Но я получаю 404 на jquery, utils и слайдерах js файлов. Похоже, что я не читаю мои настройки 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 и слайдер загружаются вовремя, а иногда и нет. Это похоже на то, что встроенный "запрос" в нижней части страницы не знает о главном требовании на странице или правилах зависимостей, но моя точка останова попадает в main.js, поэтому я знаю, что она вызывается. Это потому, что main.js загружается асинхронно, но мой встроенный блок "require" в нижней части страницы загружается на странице рендеринга? Как мне обойти это?
Я использовал RequireJS успешно, но без CMS. Я всегда использовал "define", и модули всегда назывались асинхронно, но никогда не приходилось ссылаться на функцию RequireJS inline следующим образом. Любые идеи относительно правильного пути для этого?