私はRequire.jsを初めて使いました。私は単純だと思っていましたが、苦痛になり始めていることをしようとしています。Require.jsとバックボーンを使用してグローバルApp名前空間を定義する
私は、Backboneアプリケーション用のグローバル名前空間を定義し、それをモジュールとしてロードしようとしています。ここに私の名前空間(main.js)です:
define(
['jquery',
'underscore',
'backbone',
'GlobalRouter'
],
function($, _, Backbone) {
var App= {
Models: {},
Views: {},
Collections: {},
Routers: {},
init: function() {
new App.Routers.GlobalRouter();
Backbone.history.start();
}
}
return App;
});
とここに私のconfig.jsのファイルです:
require.config({
// your configuration key/values here
baseUrl: "js", // generally the same directory as the script used in a data-main attribute for the top level script
paths: {
'jquery' : '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min',
'underscore': 'vendor/underscore-min',
'backbone': 'vendor/backbone-min',
'marionette': 'vendor/backbone.marionette',
'main' : 'main'
}, // set up custom paths to libraries, or paths to RequireJS plugins
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'main' : {
deps: ['underscore', 'jquery', 'backbone', 'GlobalRouter'],
exports: 'TEWC'
}
} // used for setting up all Shims (see below for more detail)
});
define([
'jquery',
'underscore',
'backbone',
'main'
],
function($, _, Backbone, App, GlobalRouter) {
console.log(App)
alert('hit ')
$(function() {
App.init();
});
}
)。
と良い測定のために、ここに私のルータです。過去には
define([
'jquery',
'underscore',
'backbone',
'main'
],
function($, _, Backbone, TEWC) {
TEWC.Routers.GlobalRouter = Backbone.Router.extend({
routes: {
"" : "index",
"documents/:id" : "edit",
"login" : "login"
},
edit: function(id) {
alert('edit')
},
index: function() {
alert('index')
},
login: function() {
alert('login')
}
});
});
、私はなっていた「アプリは、未定義のエラーです」。 、しかし、警告は発生しません、とmain.jsがロードされるようには見えませんが、私は、ルータがないと信じて
Uncaught Error: Load timeout for modules: main
:今、私はこれを言い、数分後に負荷のタイムアウトエラーを取得しますTEWCが定義されていないことを知らないので、[ネットワーク]タブにないのにロードされている可能性があります。
これはおそらくルーキーの質問です。誰もこれについての洞察を持っていますか?
これは、Addy OsmaniのTodoMVCとバックボーンを組み合わせたもので、その違いを生み出す必要があります(https://github.com/addyosmani/todomvc/tree/gh-pages/dependency-examples/backbone_require)!ありがとう! – streetlight
streetlight:正確な問題は何だったのでしょうか?私も同様の問題があります。 –
@ JohnEdward、私はmain.jsをAMDスタイルで、define関数などで設定しなければならないと思います。また、定義しているファイルの順序も関数のパラメータの順序と一致することを確認することが非常に重要です。これはまったく役に立ちますか? – streetlight