Marionettejs 路线
Marionettejs Routes
我是 Marionette 的新手,我就是找不到工作路线。
我正在使用 Marionette 的 2.4.1 版本,并尝试以最简单的方式进行操作,这样它就可以正常工作。
此代码适用于旧版本 Marionette,v1.0.2,它包含在 yeoman 的生成器之一中。我知道这两个版本之间存在巨大差距,但每个 post、博客、官方文档甚至为该框架编写的书籍代码都保持不变。
控制台没有错误,但是 'home' 方法无法启动。
我是不是漏掉了什么?
application.js(申请正文):
define(['backbone', 'marionette'],
function (Backbone, Marionette) {
'use strict';
var App = new Marionette.Application();
App.Router = Marionette.AppRouter.extend({
appRoutes: {
"home": "home"
}
});
var myController = {
"home": function() {
console.log("This thing just won't work.");
}
};
/* Add initializers here */
App.addInitializer(function () {
console.log('App initialized');
new App.Router({
controller: myController
});
});
App.on("initialize:after", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
return App;
});
main.js(启动我们在 application.js 中定义的应用程序):
require(['marionette', 'application'],
function ( Marionette, App ) {
'use strict';
App.start();
});
config.js(require.js 的配置)
require.config({
baseUrl: "/scripts",
/* starting point for application */
deps: ['marionette', 'main'],
shim: {
backbone: {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
},
marionette: {
deps: ['backbone'],
exports: 'Marionette'
}
},
paths: {
backbone: '../bower_components/backbone/backbone',
jquery: '../bower_components/jquery/dist/jquery',
underscore: '../bower_components/underscore/underscore',
/* alias all marionette libs */
'marionette': '../bower_components/marionette/lib/core/backbone.marionette',
'backbone.wreqr': '../bower_components/backbone.wreqr/lib/backbone.wreqr',
'backbone.babysitter': '../bower_components/backbone.babysitter/lib/backbone.babysitter'
}
});
您似乎缺少对路由器控制器的引用。
尝试更新路由器以包含对 myController 的引用:
App.Router = Marionette.AppRouter.extend({
controller: myController,
appRoutes: {
"home": "home"
}
});
有关更多信息,请参阅 AppRouter 文档:
http://marionettejs.com/docs/v2.4.1/marionette.approuter.html
似乎 initialize:after 在:
App.on("initialize:after", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
在最新版本的 Marionette 中不受支持,我应该开始:
App.on("start", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
大多数关于 Marionette 的帖子似乎都已经过时了。这些仍然非常有用,但请务必使用官方框架的文档进行验证。
我一开始就应该这样做..
我是 Marionette 的新手,我就是找不到工作路线。
我正在使用 Marionette 的 2.4.1 版本,并尝试以最简单的方式进行操作,这样它就可以正常工作。
此代码适用于旧版本 Marionette,v1.0.2,它包含在 yeoman 的生成器之一中。我知道这两个版本之间存在巨大差距,但每个 post、博客、官方文档甚至为该框架编写的书籍代码都保持不变。
控制台没有错误,但是 'home' 方法无法启动。
我是不是漏掉了什么?
application.js(申请正文):
define(['backbone', 'marionette'],
function (Backbone, Marionette) {
'use strict';
var App = new Marionette.Application();
App.Router = Marionette.AppRouter.extend({
appRoutes: {
"home": "home"
}
});
var myController = {
"home": function() {
console.log("This thing just won't work.");
}
};
/* Add initializers here */
App.addInitializer(function () {
console.log('App initialized');
new App.Router({
controller: myController
});
});
App.on("initialize:after", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
return App;
});
main.js(启动我们在 application.js 中定义的应用程序):
require(['marionette', 'application'],
function ( Marionette, App ) {
'use strict';
App.start();
});
config.js(require.js 的配置)
require.config({
baseUrl: "/scripts",
/* starting point for application */
deps: ['marionette', 'main'],
shim: {
backbone: {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
},
marionette: {
deps: ['backbone'],
exports: 'Marionette'
}
},
paths: {
backbone: '../bower_components/backbone/backbone',
jquery: '../bower_components/jquery/dist/jquery',
underscore: '../bower_components/underscore/underscore',
/* alias all marionette libs */
'marionette': '../bower_components/marionette/lib/core/backbone.marionette',
'backbone.wreqr': '../bower_components/backbone.wreqr/lib/backbone.wreqr',
'backbone.babysitter': '../bower_components/backbone.babysitter/lib/backbone.babysitter'
}
});
您似乎缺少对路由器控制器的引用。
尝试更新路由器以包含对 myController 的引用:
App.Router = Marionette.AppRouter.extend({
controller: myController,
appRoutes: {
"home": "home"
}
});
有关更多信息,请参阅 AppRouter 文档: http://marionettejs.com/docs/v2.4.1/marionette.approuter.html
似乎 initialize:after 在:
App.on("initialize:after", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
在最新版本的 Marionette 中不受支持,我应该开始:
App.on("start", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
大多数关于 Marionette 的帖子似乎都已经过时了。这些仍然非常有用,但请务必使用官方框架的文档进行验证。
我一开始就应该这样做..