我有一个非常简单的应用程序,类似于Todo,有一个名为Subject的实体。
Symfony2将服务于REST api,Backbone应用程序将负责客户端发生的事情。 我一直在尝试设置我的项目,以便Require.js加载基本模型和一组非常简单的视图,但我总是得到这个错误:
"NetworkError: 404 Not Found - http://localhost:8000/bundles/pfiuser/js/app/.js"
接着是
Error: Script error for: http://requirejs.org/docs/errors.html#scripterror
In require.js line 166
最后是超时:
Error: Load timeout for modules: http://requirejs.org/docs/errors.html#timeout
我不太了解Require.js,但我认为它来自我所做的defines
其中一项并不起作用。这是需要的配置(我的工作基于this tutorial):
requirejs.config({
baseUrl: '{{ asset('bundles/pfiuser/js/app/') }}',
paths: {
text: "vendor/requirejs-text/text",
jquery: 'vendor/jquery/dist/jquery',
underscore: 'vendor/underscore/underscore',
backbone: 'vendor/backbone/backbone',
bootstrap: 'vendor/bootstrap/dist/js/bootstrap',
bootstrapEditable: 'vendor/bs3-editable/bootstrap-editable'
},
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
bootstrap: {
deps: ['jquery'],
exports: 'Bootstrap'
}
}
});
然后我打电话给应用程序:
require([
'{{ asset('bundles/pfiuser/js/app/app.js') }}'
], function(App){
App.initialize();
});
在app.js中,它变得奇怪了。这是基本文件:
define([
'jquery',
'underscore',
'backbone',
'router'
], function($, _, Backbone, Router){
var initialize = function(){
//Router.initialize();
}
return {
initialize: initialize
};
});
我得到了错误。如果我只评论路由器(调用其他文件),我仍然有错误。但如果我评论骨干电话,我就不会再出现错误了:
定义([ ' jquery的&#39 ;, '下划线' / , '主链&#39 ;, '路由器' / ],function($,_,Backbone,Router){ var initialize = function(){ //Router.initialize(); }
return {
initialize: initialize
};
});
这个错误对我来说听起来很神秘,所以我不知道如何解决它。这是我的项目目录结构,供参考:
//In src/PFI/UserBundle/Resources/public/js/
app/
|-- collections
| |-- subjects.js
|-- models
| |-- subject.js
|-- templates
| |-- subjects
| | |-- list.html
|-- vendor
| //all the libraries installed via bower
|-- views
| |-- subjects
| |-- list.js
|-- app.js
|-- boilerplate.js
|-- main.js //(unused as I configure requirejs directly in the page layout)
|-- router.js
答案 0 :(得分:1)
我也在尝试使用Symfony2的require,但我认为你不应该这样做:
require([
'{{ asset('bundles/pfiuser/js/app/app.js') }}'
], function(App){
App.initialize();
});
更像是
require([
'app'
], function(App){
App.initialize();
});
实际上你的基本网址已经指定了我认为的路径,而且,最后你不应该有.js。 (我看到了一些关于twig filter | raw | escape' .js')
的例子