我遇到的问题是,几乎完全相同的require.js配置调用看起来效果不同,有一种情况是无法设置baseUrl
和path
。
文件夹结构
- /js
- - app/
- - libs/
- - - hogan.js
- - - backbone
- - - - backbone.js
- - - - etc.
- - - boostrap
- - - jquery
- - - - jquery.js
- - - - etc.
- - - require
- - - - require.js
- - - - etc.
- - templates/
- - require.config.js
脚本标记
<script data-main="/resources/js/require.config" src="/resources/js/libs/require/require.js"></script>
需要配置
require.config(
{
baseUrl: "/resources/js/libs",
shim: {
"underscore": {
exports: "_"
},
"backbone": {
deps: [
"json2",
"underscore",
"jquery"
],
exports: "Backbone"
}
},
paths: {
"app": "/resources/js/app",
"backbone": "backbone/backbone",
"jquery": "jquery/jquery",
"templates": "/resources/js/templates",
"templateEngine": "hogan"
}
}
);
require(
[
"app/router"
],
function( AppRouter ){
AppRouter.execute();
}
);
在这两种情况下,附加一个脚本标记,显示require.config.js的全部内容,从以下开始:
<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="require.config" src="/resources/js/require.config.js">
app / router中的定义
define(
[
'backbone',
'templateEngine'
],
// etc
);
然而,如果出现问题,app / router永远不会被加载,只有以下(没有404,没有):
GET require.js 200 OK 180ms
GET require.config.js 200 OK 69ms
如果我将require(["app/router"]);
输入Firebug控制台,我会收到以下信息:
"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"
我希望看到的是:
尝试解决方案
baseUrl
和paths
使用相对路径和绝对路径的各种组合。例如baseUrl: libs
和paths: { "app" : "../app" }
等deps
和callback
,而不是使用require
下面的config
。context
,匹配baseUrl
。baseUrl
和paths
;仍然会遇到同样的问题如果忽略配置,只会尝试加载 /resources/js/libs/backbone.js ,例如)。注意
此文件夹结构和配置文件在我的localhost上有效,我从路径中删除 / resources / ,如上所示。相反,所有相对路径(无以/开头)用于baseUrl
和paths
。但是在实际的服务器上不是一个选项。
答案 0 :(得分:5)
解决方案是没有。 (句点)配置文件的文件名。将文件重命名为require-config.js后,一切都按预期工作。其他文件可以在名称中使用圆点,而不是主配置文件。