如何管理骨干应用
How do I manage a Backbone app?
我试图围绕Backbone进行思考,更具体地说,应用程序在其整个生命周期中的流动方式。不幸的是,在我的工作中,我无法访问(或就此而言(我们的API是如何构建的。我们有来自不同时间段的许多不同的电话,结构疯狂不一致。
覆盖获取或同步不是标准化返回的问题,但我遇到的(在我深入研究 Backbone 应用程序的一开始(是如何布局实际代码。
这是我的真实世界示例。这个页面是非关键的,我正在尝试用Backbone重写它。以下是流程:
- 页面从调用加载流派类型的列表 单击流派类型会根据流派类型加载子流派
- (子流派类型需要流派代码作为参数(
- 单击子类型类型会加载具有该条件的所有产品。
我可以走得很远,但在某些时候我觉得代码被破坏了 - 或者感觉不自然。就像我把东西塞进去一样。
所以我的官方问题是:如何管理骨干应用程序?
以下是我的流程摘要:
我创建了一个全局命名空间
,应该var App = App || {};
好的,让我们从主应用程序视图开始,如所有示例所示:
App.MainView = Backbone.View.extend({
//this loads the outer stuff
//and creates an instance of the Genre View
});
好吧,非常简单,我将需要一个流派模型、集合和视图(这也适用于子流派(
App.Genre = Backbone.Model.extend();
App.Genres = Backbone.Collection.extend({
url: 'returns a list of genres',
model: App.Genre,
initialize: function() {
this.fetch();
},
fetch: function() {
var self = this;
$.ajax({
url: this.url,
success: function(response) {
**format return**
self.add(formattedArrayOfModels);
}
});
}
});
现在来看观点,令人困惑的部分
App.GenreView = Backbone.View.extend({
el: 'element',//easy enough
tmpl: 'my handlebars template',//implementing handlebars...no problem
initialize: function() {
//this produces a collection full of genres
this.genreList = new App.Genres();
this.genreList.on('add', _.bind(this.render, this));
},
render: function() {
//rendering not a problem, pretty straight forward
}
});
直到这里,我没有问题。流派列表加载,我们很好。所以,现在当用户点击一个流派时,我希望它加载一个子流派
events: {
'click a': 'getSubGenres'
},
getSubGenres: function(e) {
}
这是我的问题。在getSubGenres中,我是否将其保留在本地?
var subGenre = new App.SubGenreView();
还是我应该将其作为流派视图的一部分?
this.subGenre = new App.SubGenreView();
我是否应该以某种方式将其放在父对象中,以便其他视图可以访问它?我该如何控制这样的事情?
如果我已经有一个子流派的集合,我该如何使用加载的集合(而不是另一个 ajax 调用(。
这是您将使用的方法吗?
回答之前的几件事,首先:fetch 函数不需要$ajax调用,因为它是它的工作,因此,您可以在 fetch 中立即评估error:function(){}
和success:function(){}
,但这假设 URL 设置正确。第二:在我的主干键盘头斗争中对我有很大帮助的一件事是Addy Osmani Backbone Fundamentals,其中包含一个非常丰富的PDF格式教程。
现在回到问题:根据我的经验,你最需要"这个",所以习惯它是一个很好的兔子,而且如果正确实施,有一些东西可以解决很多这些问题: 骨干布局管理器
无论如何,在你的情况下,放置子视图的位置的决定完全是一个设计决定,并且在很大程度上取决于你如何构建页面和文件。
关于如何使用预加载的"集合":我真的不明白,因为您所说的集合包含所有子类型,因此通常即使视图更改为某个流派视图,它也不会更改,您仍然可以使用它。
但我所说的一切,都是相对于你如何构建文件,我做了一个应用程序.js和一个路由器.js还有很多其他文件,但主要工作总是在主要的两个上,所以基本上我总是可以访问所有内容。
我希望这回答了你的问题
- 如何在应用中管理到 Firebase 数据的动态路径
- 管理动态磁贴和应用程序生命周期
- 单页应用程序的Javascript依赖性管理
- 如何利用jquery在web应用程序中创建字符串资源管理系统
- 带有管理面板和客户端面板的MEAN应用程序
- 使用 JavaScript 管理 Web 应用程序权限策略
- 如何在大规模应用程序中管理 tabindex
- 如何使用 ExtJS6 cookie 提供程序和状态管理登录表单.管理器 + OL3 用于网络制图应用程序
- 使用主干.js中的路由管理单页应用程序中的多个视图实例
- 我们可以在角度应用程序中使用 requirejs 来仅管理/模块化应用程序的一部分吗?
- 我可以从 Web 应用程序打开 Windows 资源管理器窗口吗?
- 如何在“通量”应用程序中管理昂贵的派生计算
- 如何管理移动应用的图像
- 如何管理骨干应用
- 骨干网.js大型多页面应用程序,管理页面过渡干净销毁,创建等
- 在基于sinatra的网络应用程序中提供grunt管理的UI
- 如何将apache2.2配置为负载均衡器来管理运行javascript应用程序的tomcat实例
- 管理“;这个“;在事件/回调驱动的JavaScript应用程序中
- 管理React JS应用程序中的角色
- 如何在单页应用程序中管理与IndexedDb的连接