我是backbone.js的新手,正在研究一些教程。我发现了一对看似不错的东西,但是它们的实施方式存在一些不一致之处,所以我正在寻找一些关于最佳实践的指导。
以下是我正在学习的教程:
我的问题是:
或者,如果有人可以建议一个遵循最佳实践的更好的介绍教程,我很乐意从那里学习。不幸的是,由于这两者之间的不一致,我担心我可能会在门外学习一些坏习惯。
提前致谢。
答案 0 :(得分:3)
Backbone.Controller去年是renamed to Backbone.Router。我猜你正在读一本旧教程。
BackboneTutorials.com是一个体面的入门教程。
在您学习的过程中构建一个小应用程序,您将了解Backbone为您做的事情。
学习Backbone的最佳方法是通过annotated source code。每条线都经过评论和解释。
在构建应用时,请使用dev version代替缩小版。这有助于调试。
如果您正在阅读书籍,请查看Addy Osmani的Backbone Fundamentals免费电子书。这本书很棒,但很冗长。您可以将其用作参考。
有关确定的资源列表,请参阅Quora上的this question;
不要过分担心什么是'V'以及什么是'C'和骨干在MVC上的旋转。 该框架在分离与服务器交互的代码和执行核心客户端逻辑的代码方面做得非常出色。 DOM Elements的模板和更新由您自己决定。从这个意义上说,它非常简约。 Backbone提供Events,使不同的部分相互作用。
答案 1 :(得分:1)
这是一个很好的问题。尽管如此,Backbone并未就如何组织代码采取立场。
所以,真正的答案是:它取决于。
这取决于您的应用程序的需要以及您如何习惯编程。
如果您想了解一些最佳实践,请参考Backbone Boilerplate项目:https://github.com/tbranyen/backbone-boilerplate
这个项目非常扎实,在开始时真的帮助了我。
然后,回答你的问题(这可能会引起注意,而且确实存在):
1 :Backbone主要是MV *框架(Model-View-Whatever)。控制器逻辑大部分都存在于Backbone视图中,这对于前端开发来说是可以的,因为逻辑通常与UI紧密相关(因为我们主要是编码接口)。 Backbone不会随控制器内置,但如果您更喜欢这种类型的组织,那么只需构建自己的组织。
2 :网址取决于您的需求。如果您要获取完整集合,请在集合上进行设置,如果您只获取(或可能正在保存)一个模型,请在模型上进行设置。这些也太好了。
3 :关于路由器,如果您在应用上构建多个页面/部分,请使用它们。但是要注意不要像在RESTful API中那样使用routes
作为action
,这将在大多数情况下最终带来问题(用户按回按钮等)。因此,如果您想管理页面,请使用路线。
希望这有帮助!!
答案 2 :(得分:1)
我将从经验中回答:
问:第二种情况正好相反。对于MVC主干中的“C”,哪种最佳实践?
答:当前Backbone http://backbonejs.org/中没有Controller
- “C”在View(大多数情况下)或路由器中发生(见下文)。
问:第一个tut定义了Model中的url,而第二个tut在Collection中定义了url。哪种更好的做法?
答:有些情况下您不需要收藏品。如果不这样做,您的模型绝对需要一个URL。如果您有集合,则为Collection指定的URL将应用于其模型。
问:第二个tut使用Backbone.Router,而第一个没有。哪种是最佳做法?
A:经验法则 - 您希望在2种情况下使用路由器:1)当您想要拥有历史记录时,以及2)当您想拥有永久链接时。否则你真的不需要路由器。