【发布时间】:2012-01-20 16:53:12
【问题描述】:
简介
我目前正在编写一个非常标准的基于 Django 的应用程序(基本上是一种花哨的 CRM/联系人列表之类的东西)。它有点工作,但随着我不断尝试使用越来越多的 AJAXy UI 代码(使用 jQuery)来改进界面,使用它开始变得非常痛苦。我得到了一大堆脆弱的 jQuery 事件处理程序,它们解析 DOM,将更改推送回服务器,获取一些 JSON,并尝试基于此更新 DOM。
我觉得,至少,我可能想在组合中添加一些客户端模板。或者,我可以尝试切换到 JS 框架,并将我的 Django 应用程序用作数据库抽象层。或者即使我了解并喜欢 Python,我也可以放弃 Django 应用程序,并尝试使用 JS/Node.js 解决方案或其他方式。
还有其他人遇到过这种情况吗?你是怎么解决的?
设计目标
- DRY:我不想复制我的模型或我的模板(或者至少不需要复制)。
- 我希望访问者登陆页面以在服务器端获取结果。
- 当访问者点击事物时,我想通过客户端模板和渲染来处理它,并通过对 REST 接口的 AJAX 调用保持服务器更新。
那么...我该怎么做呢?我收集了一些框架和模板系统的链接。排名不分先后:
dust.js:
这显然是being used by LinkedIn 来解决类似的问题。它在服务器端使用 Node.js,这并不理想(我从未使用过 Node),但至少它不是基于 JVM。它在 github 上似乎也处于休眠状态 - 我发现人们一直想知道维护者去了哪里的邮件列表。听起来确实不错——LinkedIn 的博客文章很好地推销了这项技术,尤其是编译它的能力。但它似乎只是模板。这足以满足我的要求吗?
Mustache:
此选项同时具有 Python 和 JS 实现,并且似乎很受欢迎……但我找不到任何似乎在 Django 中使用 Mustache 模板的人。这是因为它太容易配得上一篇博文,还是不可能或不明智?它也非常有限。至少我可能需要求助于某种 MVC JS 框架,对吧?
Backbone、Spine、KnockoutJS、EmberJS、JavascriptMVC 等:
有这么多 框架,这有点令人生畏。乍一看,所有这些似乎都非常好。如果我走这条路,我似乎还需要重写我的很多应用程序,而且我真的很想找到一个实际上已经做过类似事情的人。另外,如果有一个明确的选择让来自 Django 的人作为背景,那就太好了;我不想学习六种不同的框架来评估它们。
DerbyJS
这看起来很有趣,因为它在一个包中同时处理客户端和服务器端,但有点不成熟。他们警告不要在生产中使用它,如果我理解文档,它还不支持任何形式的持久性,这是......限制。我有一种感觉,如果它完成了,那将是完美我想要的......
所以....
那么,呃……现在呢?有没有人使用这些工具尝试将客户端渲染添加到 Django webapp?进展如何?
【问题讨论】:
-
冒着说明显而易见的风险,您应该看一下骨干、淘汰赛和可能的琥珀色(以前是sproutcore)。这些框架的方法略有不同,讨论优缺点可能是一本小说,但其中任何一个都可以帮助您显着清理问题。
-
这篇博文可能会让您感兴趣(也请查看 cmets):faassen.n--tree.net/blog/view/weblog/2011/11/18/0
-
@J.Spiral 谢谢。我一直在研究框架,但我不清楚这是否是正确的方法。我已经稍微改写了我的问题以反映这一点。
-
@Etienne 谢谢!我会看看的。
标签: javascript django client-side-templating