Backbone.Marionette
、Backbone.Router
およびを使用して Web アプリをブートストラップする最良の方法を探していRequirejs
ます。
次の実装は機能しますが、これが正しい方法であるかどうかを知りたいです。
これが私のコードの一部です(*)。
私の質問は:
1) 次のデータ フロー ( index.html
-> conf.js
-> router.js
-> ) は正しいapp.js
ですか?
2) Backbone.View
for each region ( header
, sidebar
.....) は、コンテキストに応じて、またはブースでインスタンス化する必要がありrouter.js
ますapp.js
か?
// index.html
<!doctype html>
<html lang="en">
<head>
<!-- Load the script "/js/conf.js" as our entry point -->
<script data-main="js/conf" src="js/vendor/require.js"></script>
</head>
<body>
</body>
// js/config.js
require.config({
// some code
});
require(['app']); // instead of require(['conf']);
// router.js
define([
'app',
// others modules
],
function(App, $, _, Backbone, Marionette){
"use strict";
var AppRouter = Backbone.Marionette.AppRouter.extend({
routes: {
test: test,
"*defaults": "home"
}
var initialize = function ()
{
var app_router = new AppRouter;
};
return {
initialize: initialize
};
});
// js/app.js
define(
[
// some modules
],
function ($, _, Backbone, Router, Mustache, Layout, SidebarView) {
var MyApp = new Backbone.Marionette.Application();
MyApp.addInitializer(function () {
$('body').html(Layout);
MyApp.addRegions({
header: '#header',
sidebar: '#sidebar',
mainColumn: '#main-column',
rightColumn: '#right-column'
});
});
MyApp.addInitializer(function () {
var sidebarView = new SidebarView();
MyApp.sidebar.show(sidebarView);
});
MyApp.on("initialize:after", function () {
// Router.initialize();
});
MyApp.start();
return MyApp;
});