构建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