您对主干.js 项目的最佳实践是啥?
Posted
技术标签:
【中文标题】您对主干.js 项目的最佳实践是啥?【英文标题】:What are your best practices for backbone.js projects?您对主干.js 项目的最佳实践是什么? 【发布时间】:2011-07-28 23:36:58 【问题描述】:虽然我已经关注了backbone.js 几个月并且完成了大量教程,但我仍然没有足够的信心对backbone(或我的技能)在更大的项目中使用它。
我的经验是,backbone.js 教程的质量差别很大,有些已经过时了(尤其是来自主干文档的示例 todo 应用程序)。
所以我想了解一下您的backbone.js 最佳实践/食谱?你如何处理嵌套的集合/视图? JSON序列化?模型之间的查询更复杂?
【问题讨论】:
你能具体说说你的问题吗?你遇到了什么问题? 例如我在使用 Backbone.View 时遇到了一些小故障...我在没有 this.el 的情况下渲染了我的视图,因此我的所有事件处理程序在第一次模板刷新后都丢失了。但是还有一些我喜欢讨论的其他领域,例如嵌套视图、模型之间的关系、模型继承...... 我认为您应该将其分解为多个问题,并在每个问题中包含指向其他问题的链接。 【参考方案1】:以下是您似乎提出的问题列表:
backbone.js 最佳实践/食谱 我的第一个实践/食谱是深入研究backbone.js code 并阅读它,甚至使用 js 调试器逐步完成它。该代码有据可查,是现代 JS 代码应有的优秀示例。
如何处理嵌套的集合/视图? Afaik 没有“简单的方法”来处理嵌套集合和处理子集合中发生的事件。你必须实现它。不过,我还没有处理集合的集合,所以也许你可以通过重构你的“数据模型”来避免它。具有模型集合的模型本身可以满足嵌套模型的大部分要求。
就视图而言,您基本上可以控制它们的呈现方式。主干提供的视图只不过是一种将相应模型更改为渲染代码的机制。您实现渲染。因此,如果您想要嵌套视图,您可以使用支持局部视图的模板引擎(如果我正确理解嵌套视图的含义)。
JSON 序列化 你有什么问题?主干文档说“强烈建议包含 json2.js”
模型之间的查询更复杂? 再说一次,你的问题是什么? Backbone 为您提供了做自己的事情的结构,您必须自己实现复杂性
模型之间的关系 同样,您正在实施模型。您的模型可以包含其他模型。你对他们做什么以及如何互动取决于你自己。根据我的经验,没有必要在 javascript 中复制后端数据模型。您的前端模型很可能比后端模型更简单。
模型继承 通过使用backbone.js,您已经在使用模型继承。这就是您编写 var MyModel = Backbone.Model.extend...
时发生的情况很抱歉没有详细说明,但正如托马斯戴维斯所说,问题非常模糊。对于描述您遇到的特定问题的更详细的问题,您将获得更详细的答案。
【讨论】:
好像在解释个人经历。不是新手应该如何移动。 你可以试试我的书 Backbone.js Patterns and Best Practices (amazon.com/dp/1783283572),它详细讨论了所有这些要点。【参考方案2】:由于这个问题的答案可能太长,因为它的范围很广,我将在此处保留这些链接。我希望他们能帮助其他发现这个问题的人,因为他们帮助我更好地理解了这个框架并拥有更好的应用程序,有效地使用内存,更好地组织文件以及更易读和可维护的代码:
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
我希望我从一开始就有这个。
干杯!
【讨论】:
【参考方案3】:我认为这些问题在一个简单的帖子中回答起来有点模糊。
我即将完成在 Backbone.js 中完成的完整网络应用程序,并且还想讨论这些最佳实践,以便我可以在发布前快速修改一些选择。
我目前正在backbonetutorials.com 上尝试最终将这些更难的问题组合在一起。
保存收藏的解决方案可能是第一个问题,但如果有一些社区参与会很棒。
【讨论】:
我同意这些问题太模棱两可了。我认为您网站的一个好功能是使用主干的 github 存储库列表。 我知道 *** 不是讨论开发策略的最佳场所,但目前我没有想到更好的论坛。 这是询问策略的好地方,但要具体说明您面临的问题。【参考方案4】:在开发基于 Backbone.js 的应用程序时,您可以处理许多事情。例如:
-
自定义插件和 mixins
嵌套视图/子视图
部分视图更新
模板管理 - 在前端和后端存储、预编译
序列化模型
关系数据模型
使用事件调度器
子路由
大规模应用架构等
还有更多概念对于开发基于 Backbone.js 的单页应用程序至关重要。你可以试试我的书Backbone.js Patterns and Best Practices,它详细讨论了所有这些要点。
【讨论】:
以上是关于您对主干.js 项目的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 express.js 在 node.js 中提供 html 的最佳实践是啥?