同位素模板(Rails)的优缺点

时间:2011-02-27 20:57:15

标签: ruby-on-rails templates erb

Isotope可让您在javascript中编写模板。然后,这些模板可以由客户端(使用普通的javascript)或在服务器上(使用Johnson)呈现。

好处是DRYer代码。在ajax或Web套接字更新上更新DOM时,您不必编写新的部分...只需将其指向您已编写的部分即可。

有没有人用过这个?

3 个答案:

答案 0 :(得分:1)

有趣的是,我必须尝试一下,但我知道不是很多人都这样做,但我实际上使用HAML来模板化.js文件。尽管作者还提到了这个问题,但是每个请求都是在服务器上模板化并发回html,除非你发送了大量的kb,或者你真的有很高的负载网站,我认为这不是什么大问题。

理想情况下,您甚至不应该发回html数据并强制使用JSON对象,这些对象是由您的ajax请求在页面上呈现的。我能看到的唯一合法用途是,如果你有很多ajax网站,比如你加载一次页面的地方,以及你只是继续对所有交互和javascript操作视图的ajax请求。

如果你澄清最终目标,那会有所帮助。这适用于你控制用户环境的一些内部应用程序(你知道他们将使用哪些浏览器,并且他们将拥有足够快的计算机来操纵所有这些javascript?)或者它是否会成为针对第三世界的应用程序,人们还没有资源可以使用所有那些花哨的javascript。

所有这一切,这是一个有趣的概念,我会亲自尝试,看看它的运作情况。

答案 1 :(得分:0)

这使用Johnson,我检查的最后一次不适用于Ruby 1.9。这可能暗示了这个特定解决方案的一些不成熟。最终,社区将提出一些非常有效的方法。

我使用的一种方法是制作2个完全独立的模板,但尝试使它们尽可能相似,以便将更改从一个移植到另一个。

答案 2 :(得分:0)

这似乎是一个坏主意。在Ajax应用程序中,我认为服务器应该负责呈现所有显示文本。这使得i18n更容易,并将所有内容集中在一个地方。 JavaScript应该只是从服务器接收数据,所有显示文本都已经呈现,并将其放在适当的DOM对象中。

换句话说,我相信在Ajax应用程序中,对JS模板引擎的需求本身就是一种设计气味。

当然,仅在客户端JS应用程序中情况不同。