我应该使用Backbone和客户端模板,比如Mustache吗?

时间:2011-12-15 21:21:42

标签: backbone.js mustache

我最近得到了类似的感受。几年前,当我一直使用Apache,Django和MySQL时,我就有这种感觉。我觉得我正在使用的网络堆栈开始显示它的年龄。那么,那时候,我转而使用Nginx,Flask和MongoDB。我开始觉得这个堆栈再次出现了它的年龄,因为我听说有很多新的酷东西在新的堆栈中听起来更容易。

例如,我听说很多关于Backbone.js以及客户端模板,比如Mustache。这些似乎能够利用URL哈希刘海并产生非常棒的声音应用程序。

我一直在玩Node.js,Express.js和Mustache.js模板(我不喜欢Jade)。这个设置感觉就像我可以熟悉的东西,因为它让我想起了Jinja,这就是我和Flask一起使用的东西。这仍然不包括Backbone或客户端模板。但是,当我看到它时,我怎么知道使用它们的好方案呢? Backbone和Moustache在客户端上应该投入时间吗?我如何知道何时应该使用它们以及何时不应该使用它们?

如果我切换到这个更新的堆栈,我想我仍然会在服务器上生成我的HTML,就像我当前的堆栈一样。如何切换到客户端模板,为什么,我猜?

4 个答案:

答案 0 :(得分:4)

你可能无法在这样的问题上得到明确的答案, 它更开放而不是真正的代码问题,你很有可能将它转移到另一个地方。但直到那时我才给出答案并没有什么坏处。

  1. 在服务器上生成html没有错, 即使像谷歌+等巨大的javascript注入的网站,仍然在服务器上渲染大部分标记。

  2. 骨干的使用,在我看来取决于你想要制作的网站/应用程序,仅此一项已经说明了, 我问自己的第一件大事是,我在申请吗?或者一个网站。 虽然一些网站可以从骨干网中获益,但我相信一个应用程序就是骨干在其所有荣耀中展示的地方。在创建网站时,我最终会使用骨干网来获得一些结构,但不是完整的模型,集合,视图和路由器。

  3. 在模板引擎上,您需要选择引擎有两个原因:

    • 我很自在地写这个引擎是如何工作的(语法,我的html之间没有太多的javascript(循环等))
    • 我的引擎可以做我想做的事情(在某些情况下你想要嵌套模板,有些引擎不这样做,......
  4. 第一个不如后者重要,语法通常可以更改,某些引擎支持配置,您可以在其中设置语法{{}}或<%=%>或者你自己编造的东西。

答案 1 :(得分:4)

使用backbone.js ...

  1. 创建中到重型Web应用程序时,

  2. 并且只有当你有工作的restful api返回json

  3. 使用客户端模板......

    1. 当你可以用json对象填充数据时,

    2. 并且您希望利用客户端上的布局和结构内容缓存,并且只从服务器获取数据

答案 2 :(得分:1)

这不是其他答案的技术答案,但会给你其他观点。

您绝对应该使用Backbone或其他客户端框架,因为速度对用户体验很重要。体验越快,人们花在您网站上的时间就越多。人们不喜欢等待,当事情快速时,人们会更加投入。很少有东西可以比等待更快地杀死参与。

为什么选择Backbone?

你已经熟悉了MVC,所以在这方面没有什么新东西需要学习。有了像淘汰赛这样的MVVC框架,你必须花时间去研究这种模式。

它是最受欢迎的客户端框架之一。很多人都在使用它,有大量的资源可以帮助你学习。我已经列出了一份在生产中使用它的公司名单: http://www.quora.com/Can-we-get-a-poweredby-list-of-sproutcore-javascriptmvc-backbone-js-individually

因为它是最受欢迎的客户端框架(Sproutcore / Amber.js,Spine,Knockout.js,Cappucino等),所以有很多文档。

就模板引擎而言,我建议您除了已经是underscore.js(除了jQuery或Zepto.js之外唯一的硬依赖)的John Resig微模板之外,不要打扰任何事情。 )。挑选另一个模板引擎是一个更令人担忧的部分,担心这确实没有那么大的差别。从一个模板引擎切换到另一个模板引擎也很简单。对于中小型项目,交换是半天到2天的项目。

答案 3 :(得分:1)

我想我可以看到你的目标。我个人认为NodeJS,ExpressJS,MongoDB和MustacheJS在一起非常好。

您可以像往常一样创建网页。使用MustacheJS将字段放在您希望数据显示在标记中的位置。

然后在NodeJS端,您可以使用express路由到html文件,从mongoDB收集数据,使用mustacheJS解析文件,然后将其吐出到客户端。

这很直接。

以下是我不久前写的一个例子:

NodeJS, ExpressJS and MustacheJS Template Engine

就数据而言,我使用的是标准对象,但可以很容易地用mongoDB数据集替换。