这是/themes/ifd/js/
文件夹中的配置文件:
require.config({
// Initialize the application with the main application file
deps: ['plugins/console', 'main'],
baseUrl: '/themes/ifd/js/components'
paths: {
jquery: 'jquery/jquery.min',
flexslider: 'flexslider/jquery.flexslider-min',
easydropdown: 'easydropdown/jquery.easydropdown.min',
bpopup: 'bpopup/jquery.bpopup.min',
jqrangeslider: 'jqrangeslider/jQRangeSlider',
jqueryui: 'jquery-ui/js/jquery-ui-1.10.4.custom.min'
// More additional paths here
},
shim: {
jqueryui: 'jquery'
},
// Prevent caching issues, by adding an additional URL argument
urlArgs: 'bust=' + (new Date()).getDate()
});
我在/themes/ifd/js
文件夹中也有一个main.js文件:
require([
// Require the modules
'modules/module',
'jquery',
'flexslider',
'easydropdown',
'bpopup',
'jqueryui',
'jqrangeslider'
], function (module) {
'use strict';
// Rest of a file
其余文件(模块?)在/themes/ifd/js/components
内:
在我的HTML中,我有:
<script data-main="/themes/ifd/js/main" src="/themes/ifd/js/requirejs.js"></script>
我在Chrome控制台中看到的消息:
GET http://DOMAIN/themes/ifd/js/jquery.js 404 (Not Found) requirejs.js:34
GET http://DOMAIN/themes/ifd/js/flexslider.js 404 (Not Found)
我找不到有什么问题以及为什么它不在组件目录中搜索...
答案 0 :(得分:3)
requirejs的入口点是html文件中指定的主要模块。
<script data-main="/themes/ifd/js/main" src="/themes/ifd/js/requirejs.js"></script>
requirejs loads'/themes/ifd/js/main.js'1st。现在在main.js文件中,require([...])尝试加载args中指定的模块,但requirejs将无法找到它们。
原因是requirejs不知道它们,因为require.config(...)没有被执行。
需要'/themes/ifd/js/main.js'中的'require.config(...)'才能进行所有设置
这是working example。它包括Requirejs,jQueryMobile,Backbone和Marinonette。
在index.html文件中,您需要指定要加载的requirejs的主模块。
<script type="text/javascript" data-main="js/main" src="js/libs/require-2.1.2.min.js"></script>
在此示例中,主模块位于"js/main.js"
下在main.js中,指定require.config并使用define加载模块。
答案 1 :(得分:1)
您向我们展示的网络活动表明您的配置
<script data-main="/themes/ifd/js/main" src="/themes/ifd/js/requirejs.js"></script>
您已经展示了/themes/ifd/js/main.js
的内容,但它不包含您的配置,这显然位于不同的文件中。
此处的解决方案是在致电require.config
之前将您的main.js
电话转移到require
文件中。
答案 2 :(得分:0)
看起来您只是加载main.js
并且从不告诉RequireJS使用您的配置。
此RequireJS issue列出了加载配置和主要的几种方法 -
- 在您需要顶级模块之前将配置放在HTML上。
- 使用另一个标记加载config.js.
- 对HTML文件执行嵌套的require()(需要配置而不是主要的)。
- 在main.js中执行嵌套的require()。
- 将配置保留在main.js
中 醇>最好的方法会因项目结构的不同而有所不同,因为我通常对所有页面都有一个入口点,所以我比其他方式更频繁地进行5种方式,但在某些情况下我使用了1和2。 / p>
在页面的下方还会显示这些方法的一些代码示例。