虽然我跟随backbone.js已经有几个月了,并且完成了大量的教程,但我对于backbone(或者是对于它的技能)还不太有信心,不能将其用于一个更大的项目中。
我的经验是,backbone.js教程质量存在很大的差异,有些非常过时(尤其是backbone文档中的样例todo应用程序)。
因此,我想了解你的backbone.js最佳实践/用法?您如何处理嵌套的集合/视图?JSON序列化?模型之间的更复杂的查询?
虽然我跟随backbone.js已经有几个月了,并且完成了大量的教程,但我对于backbone(或者是对于它的技能)还不太有信心,不能将其用于一个更大的项目中。
我的经验是,backbone.js教程质量存在很大的差异,有些非常过时(尤其是backbone文档中的样例todo应用程序)。
因此,我想了解你的backbone.js最佳实践/用法?您如何处理嵌套的集合/视图?JSON序列化?模型之间的更复杂的查询?
以下是您似乎提出的问题清单:
backbone.js最佳实践/示例
我的首要实践/示例是深入了解backbone.js代码,甚至通过js调试器逐步阅读它。该代码文档完备,是现代JS代码应具备的优秀示例。
如何处理嵌套集合/视图?
据我所知,没有“简单的方法”来处理嵌套集合及处理发生在子集合中的事件。你需要自己实现它。但我还没有处理过集合中包含集合的情况,因此也许可以通过重构“数据模型”来避免这种情况。一个包含自身一组模型的模型就满足大多数“嵌套模型”的需求。
至于视图,你基本上可以控制它们如何呈现。由backbone提供的视图仅仅是一种机制,用于将相应模型的更改传递到你的渲染代码。你需要实现渲染。因此,如果你想要嵌套视图,可以使用支持偏移量(如果我正确理解你对嵌套视图的意思)的模板引擎。
JSON序列化
你的问题是什么?backbone文档建议“强烈推荐包括json2.js”。
更复杂的模型之间查询?
再次,你的问题是什么?Backbone提供了结构来实现自己的事情,你需要自己实现复杂性。
模型之间的关系
同样,你正在实现模型。你的模型可以包含其他模型。你对它们的处理方式和交互方式取决于你自己。就我的经验而言,在JavaScript中不需要复制后端数据模型。您的前端模型可能比后端模型更简单。
模型继承
使用backbone.js时,你已经在使用模型继承。这就是当你写下var MyModel = Backbone.Model.extend... 时发生的事情。
很抱歉没有详细解释,但就像Thomas Davis所说,这些问题非常模糊。如果您描述了一个具体的问题,那么您将得到更详细的答案。
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
我希望我一开始就有这些链接。
祝好!
我觉得这些问题有点模糊,不能在一个简单的帖子中回答。
我即将完成一个完整的基于Backbone.js的网络应用程序,并希望讨论这些最佳实践,以便在发布之前快速修改一些选择。
目前我正在backbonetutorials.com上工作,试图将这些更难的问题组合在一起。
保存集合的解决方案可能是第一个问题,但如果有社区参与就太棒了。
在开发基于Backbone.js的应用程序时,有许多事情需要注意。例如:
还有更多的概念对于开发单页Backbone.js应用程序是必不可少的。您可以尝试阅读我的书《Backbone.js模式与最佳实践》,其中详细讨论了所有这些要点。