构建backbone.js应用程序

我有一个包含多个模型,视图,集合和模板的backbone.js应用程序(在带有ID的文本/模板的脚本标记中,视图用于使用_.template($(id).html( )))。

目前,所有上述内容都在一个文件中,这使得它非常难看。 这是一个离线应用程序(即,它从本地文件系统加载并与允许交叉源请求的Web服务器通信)。 我一直在试图弄清楚如何将视图,模型和模板移动到单独的文件中,我试着将视图和模型移出到views.js和models.js,但视图依赖于模板和模板不能放入views.js(因为它是一个JS文件,因此不能有脚本标签..)。

在这一点上我唯一的解决方案似乎是将模板移动到全局变量,这将是很好,除了将需要的JavaScript字符串转义/多行字符串。

这通常如何处理?

谢谢!


使用RequireJS将视图和模型打包到模块中,RequireJS将为您处理依赖关系解决方案。 您也可以通过这种方式下载到每个文件的一个视图或模型,而不是将它们全部放在一个views.js或models.js中。

然后,使用text! 插件将您的模板存储在文本文件中,并要求它们像普通模块一样。

define(function (require, exports, module) {
  var templateText = require("text!./person.tmpl");
  var $ = require("jquery");

  exports.PersonView = Backbone.View.extend({
    render: function () {
        doStuffWith(_.template(templateText));
    }
  });
});

看看使用Backbone和RequireJS的这些入门应用程序。

这其中有Backbone.LocalStorage,它可以帮助你脱机的东西。

https://github.com/jcreamer898/Savefavs

另一个只是构建应用程序的简单启动器...

https://github.com/jcreamer898/RequireJS-Backbone-Starter

他们的方式,你可以处理与...是模板

define([
        'jquery', 
        'backbone',
        'underscore', 
        'models/model',
        'text!templates/main.html'], 
function($, Backbone, _, model, template){
    var MyView = Backbone.View.extend({
        initialize: function(){
            this.template = _.template(template);
        },
        render: function(){
            this.template(model);
        }
    });
    return new MyView();    

});


您可能需要查看Backbone样板。 这为骨干应用程序添加了一个很好的模块化结构,而不会污染全局名称空间,并提供简单的模板缓存。

将模板渲染器更改为与JST不同的东西非常简单。 即使可以在没有任何服务器端要求的情况下遵循总体思想,样板文件也可以提供基本的node.js应用程序。

链接地址: http://www.djcxy.com/p/66829.html

上一篇: Structing a backbone.js application

下一篇: How to load scripts first when needed with require.js?