你对backbone.js项目有哪些最佳实践?

18

虽然我跟随backbone.js已经有几个月了,并且完成了大量的教程,但我对于backbone(或者是对于它的技能)还不太有信心,不能将其用于一个更大的项目中。

我的经验是,backbone.js教程质量存在很大的差异,有些非常过时(尤其是backbone文档中的样例todo应用程序)。

因此,我想了解你的backbone.js最佳实践/用法?您如何处理嵌套的集合/视图?JSON序列化?模型之间的更复杂的查询?


你能具体说明你的问题吗?你遇到了什么问题? - Vlad Gurovich
我在使用Backbone.View时遇到了一些问题... 我在没有使用this.el的情况下渲染了视图,结果在第一次模板刷新后所有事件处理程序都丢失了。但是还有很多其他方面值得讨论,例如嵌套视图、模型之间的关系、模型继承等等。 - fbuchinger
2
我认为你应该将这个问题分成多个部分,并在每个问题中包含其他问题的链接。 - jcollum
4个回答

27

以下是您似乎提出的问题清单:

backbone.js最佳实践/示例
我的首要实践/示例是深入了解backbone.js代码,甚至通过js调试器逐步阅读它。该代码文档完备,是现代JS代码应具备的优秀示例。

如何处理嵌套集合/视图?
据我所知,没有“简单的方法”来处理嵌套集合及处理发生在子集合中的事件。你需要自己实现它。但我还没有处理过集合中包含集合的情况,因此也许可以通过重构“数据模型”来避免这种情况。一个包含自身一组模型的模型就满足大多数“嵌套模型”的需求。

至于视图,你基本上可以控制它们如何呈现。由backbone提供的视图仅仅是一种机制,用于将相应模型的更改传递到你的渲染代码。你需要实现渲染。因此,如果你想要嵌套视图,可以使用支持偏移量(如果我正确理解你对嵌套视图的意思)的模板引擎。

JSON序列化
你的问题是什么?backbone文档建议“强烈推荐包括json2.js”。

更复杂的模型之间查询?
再次,你的问题是什么?Backbone提供了结构来实现自己的事情,你需要自己实现复杂性。

模型之间的关系
同样,你正在实现模型。你的模型可以包含其他模型。你对它们的处理方式和交互方式取决于你自己。就我的经验而言,在JavaScript中不需要复制后端数据模型。您的前端模型可能比后端模型更简单。

模型继承
使用backbone.js时,你已经在使用模型继承。这就是当你写下var MyModel = Backbone.Model.extend... 时发生的事情。

很抱歉没有详细解释,但就像Thomas Davis所说,这些问题非常模糊。如果您描述了一个具体的问题,那么您将得到更详细的答案。


似乎是在讲述个人经验,而不是新手应该采取的方法。 - Yugal Jindle
你可以尝试阅读我的书《Backbone.js模式与最佳实践》(http://www.amazon.com/dp/1783283572),其中详细讨论了所有这些要点。 - Swar

8
由于本问题的范围较广,答案可能会过长,因此我在这里留下链接。希望它们可以帮助其他人找到这个问题,就像它们帮助我更好地理解该框架并创建一个有效使用内存、文件更好组织和更易读和可维护的代码的应用程序:

http://ricostacruz.com/backbone-patterns/

http://kilon.org/blog/2012/11/3-tips-for-writing-better-backbone-views/

http://blog.involver.com/2012/01/26/testing-backbone-js-best-practices-2/

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/(已过时的解决方案,但阅读和理解非常重要!)

https://github.com/thomasdao/Backbone-View-Manager

我希望我一开始就有这些链接。

祝好!


2

我觉得这些问题有点模糊,不能在一个简单的帖子中回答。

我即将完成一个完整的基于Backbone.js的网络应用程序,并希望讨论这些最佳实践,以便在发布之前快速修改一些选择。

目前我正在backbonetutorials.com上工作,试图将这些更难的问题组合在一起。

保存集合的解决方案可能是第一个问题,但如果有社区参与就太棒了。


我认为问题太模糊了,同意这一点。我认为你的网站一个好的功能是列出使用backbone的github仓库清单。 - Vlad Gurovich
我知道stackoverflow不是讨论开发策略的最佳场所,但目前我想不到更好的论坛了。 - fbuchinger
这是一个很好的地方,可以询问策略,但请具体说明您面临的问题。 - Vlad Gurovich

0

在开发基于Backbone.js的应用程序时,有许多事情需要注意。例如:

  1. 自定义插件和混合
  2. 嵌套视图/子视图
  3. 部分视图更新
  4. 模板管理-存储,在前端和后端进行预编译
  5. 序列化模型
  6. 关系数据模型
  7. 使用事件分发器
  8. 子路由
  9. 大规模应用程序架构等。

还有更多的概念对于开发单页Backbone.js应用程序是必不可少的。您可以尝试阅读我的书《Backbone.js模式与最佳实践》,其中详细讨论了所有这些要点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接