backbone之module

上一篇列出了collection的代码,下面要把代码进行分离

1 //先是app.js
2 var ContactManager = new Marionette.Application();
3
4 ContactManager.addRegions({
5     mainRegion: "#main-region"
6 });
7 ContactManager.on("initialize:after", function () {
8     ContactManager.ContactsApp.List.Controller.listContacts();
9 });
 1 //再是list_view.js
 2 ContactManager.module("ContactsApp.List", function (List, ContactManager,
 3         Backbone, Marionette, $, _) {
 4     List.Contact = Marionette.ItemView.extend({
 5         tagName: "li",
 6         template: "#contact-list-item"
 7     });
 8     List.Contacts = Marionette.CollectionView.extend({
 9         tagName: "ul",
10         itemView: List.Contact
11     });
12 });
 1 //接着是contact.js
 2 ContactManager.module("Entities", function (Entities, ContactManager,
 3         Backbone, Marionette, $, _) {
 4     Entities.Contact = Backbone.Model.extend({});
 5     Entities.ContactCollection = Backbone.Collection.extend({
 6         model: Entities.Contact,
 7         comparator: "firstname"
 8     });
 9     var contacts;
10     var initializeContacts = function () {
11         contacts = new Entities.ContactCollection([
12             {
13                 id: 1, firstname: "Alice", lastname: "Arten", phoneNumber: "555-0184"
14             },
15             {
16                 id: 2, firstname: "Bob", lastname: "Brigham", phoneNumber: "555-0163"
17             },
18             {
19                 id: 3, firstname: "Charlie", lastname: "Campbell", phoneNumber: "555-0129"
20             }
21         ]);
22     };
23     var API = {
24         getContactEntities: function () {
25             if (contacts === undefined) {
26                 initializeContacts();
27             }
28             return contacts;
29         }
30     };
31     ContactManager.reqres.setHandler("contact:entities", function () {
32         return API.getContactEntities();
33     });
34
35 });
 1 //最后list_controlller.js
 2 ContactManager.module("ContactsApp.List", function (List, ContactManager,
 3         Backbone, Marionette, $, _) {
 4     List.Controller = {
 5         listContacts: function () {
 6             var contacts = ContactManager.request("contact:entities");
 7             var contactsListView = new List.Contacts({
 8                 collection: contacts
 9             });
10             ContactManager.mainRegion.show(contactsListView);
11         }
12     };
13 });
 1 //当然还有index.html
 2 <!DOCTYPE html>
 3 <html>
 4     <head>
 5         <title> Marionette Contact Manager</title>
 6         <meta charset="UTF-8">
 7         <meta name="viewport" content="width=device-width, initial-scale=1.0">
 8         <link href="../css/bootstrap.css" rel="stylesheet" >
 9
10         <style  type="text/css">
11             body{
12                 margin-top: 60px;
13             }
14         </style>
15
16     </head>
17     <body>
18         <div class="navbar navbar-inverse navbar-fixed-top" >
19             <div class="navbar-inner" >
20                 <div class="container" >
21                     <span class="brand" style=" color: white"> Contact manager</span>
22                 </div>
23             </div>
24         </div>
25         <div id="main-region" class="container" >
26             <p> Here is static content in the web page. You‘ll notice that it gets
27                 replaced by our app as soon as we start it. </p>
28         </div>
29         <script type="text/template" id="contact-list-item" >
30             <%= firstname %>  <%= lastname %>
31         </script>
32         <script src="../js/libs/jquery/jquery-1.11.1.min.js"  type="text/javascript"></script>
33         <script src="../js/libs/underscore.js/underscore.js"  type="text/javascript"></script>
34         <script src="../js/libs/backbone.js/backbone.js"  type="text/javascript"></script>
35         <script src="../js/libs/backbone.marionette/backbone.marionette.js"  type="text/javascript"></script>
36         <script src="../js/libs/json2/json2.js"  type="text/javascript"></script>
37         <script src="../js/test/module4/app.js"  type="text/javascript"></script>
38         <script src="../js/test/module4/contact.js"  type="text/javascript"></script>
39         <script src="../js/test/module4/list_view.js"  type="text/javascript"></script>
40          <script src="../js/test/module4/list_controlller.js"  type="text/javascript"></script>
41         <script type="text/javascript" >
42             ContactManager.start();
43         </script>
44
45     </body>
46 </html>

效果如图:

这就是module干的事。

时间: 2024-11-06 22:39:23

backbone之module的相关文章

使用Backbone.js, ExpressJS, node.js, MongoDB的web应用样板工程

这是web应用的一个完整的样板工程,用到了Backbone.js & Marionette, node.js & ExpressJS,MongoDB & Moogoose, Handlebars, Grunt.js, Bower和Browserify! 我建立了一个超级基础的单页面应用程序(SPA),就是一个简单的通讯录管理器, 但麻雀虽小,五脏俱全.我写这篇文章的目的是介绍一下这个应用所用到的整个技术栈:后端,数据,前端,工具和测试.主要包括下面这些技术: 后端: node.js

Backbone笔记(续)

Backbone Bockbone 总览 Backbone 与 MVC 模式:解决某一类问题的通用方案 - 套路 MVC:一种架构模式,解耦代码,分离关注点 M(Model) - 数据模型 V(View) - 表现视图 C(Controller) - 控制器 Backbone 与 SPA 传统web应用与 SPA 的区别: 状态概念代替了页面概念 http://www.example.com/page1 http://www.example.com/page2 http://www.exampl

浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)——requirejs + angular + angular-route>探讨了angular+requirejs的一个简单架构,这一篇继续来看看backbone如何跟requirejs结合. 相同地,项目架构好与坏不是说用了多少牛逼的框架,而是怎么合理利用框架,让项目开发更流畅,代码更容易管理.那么带着这个目的,我们来继续探讨backbone. 首

TodoMVC中的Backbone+marionetteJS+requireJS例子源码分析之一

Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构建或者扩展了很多新的东西,如:Application,Region,ItemView,CollectionView,CompositeView,LayoutView,AppRoute,Controller等等,把很多重复性的工作变成配置,程序入口引入了集中处理器Application,貌似Mario

undercore &amp; Backbone对AMD的支持(Require.js中如何使用undercore &amp; Backbone)

RequireJS填补了前端模块化开发的空缺,RequireJS遵循AMD(异步模块定义,Asynchronous Module Definition)规范,越来越多的框架支持AMD,像最近的jQuery,但有一些也不支持,像Backbone,那如何在RequireJS使用Backbone呢?需要使用RequireJS设置它们的一些特性:如下 require.config({ paths:{ jquery : 'jquery-1.7.2', underscore : 'underscore',

Backbone的localStorage.js源码详细分析

Backbone.localStorage.js是将数据存储到游览器客户端本地的(当没有服务器的情况下) 地址:https://github.com/jeromegn/Backbone.localStorage 1     整个函数是一个自执行函数,简化版形式如下 (function(a,fn) { //... })(a,fn); 2     9-12行/**---------此处是判断上下文有没有引入AMD模块(如requirejs)-----------*/ if(typeofdefine=

实例学习Backbone.js(一)

前面有两篇文章介绍了Backbone的model.collection和view,那么接下来我想用一个完整的Demo来记录我学习的过程, 单页操作,实现数据的增删改,后台使用json做数据库,通过restful模式接口实现增删改操作 backbone的ajax发送的常用请求包括create.put.read.delete对应http的post.update.get.delete 接下来开始吧 服务端的实现就不介绍了,restful路由的定义如下 module.exports = { get:{

[Backbone]Make Backbone Better With Extensions

Backbone is becoming wildly popular as a web application development framework. Along with this popularity comes countless extensions and plugins to enhance the power of the framework, and fill in holes that other felt needed filling. Let's take a lo

Backbone事件模块源码分析

事件模块Backbone.Events在Backbone中占有十分重要的位置,其他模块Model,Collection,View所有事件模块都依赖它.通过继承Events的方法来实现事件的管理,可以说,它是Backbone的核心组成部分. 此外,事件模块的所有方法都挂在了全局的Backbone上,如果你的代码中需要用到自定义事件(实现观察者模式),可以直接使用它. 所以很有必要一起来研究下Backbone.Events的源码,一来学习Backbone事件模块优秀的写法和思想,二来可以更好的灵活使