javascript - 在Javascript和 Javascript HTML模板中,为什么不构建整个web应用?

  显示原文与译文双语对照的内容
0 0

我正在着手一个应用,我需要开始缓存东西,它让我思考。

  1. 在该应用程序的某些部分,我通过抓取纯JSON来呈现 table 行( jqGrid,slickgrid,等等 ) 或者漂亮div行( 在新的Twitter 中),并通过 mustache,jquery.tmpl, 等来运行。
  2. 在该应用的其他部分,我只在纯 HTML ( server-side HAML模板) 中呈现信息,如果有搜索/分页,我就会转到一个新的URL并加载一个新的HTML页面。

现在问题在于缓存和可维护性。

一方面,我想,如果一切都是用 Javascript HTML模板构建的,那么我的应用将仅仅是一个HTML布局/shell,以及一系列 JSON 。 如果你看看Facebook和 Twitter的源码,那基本上就是他们正在做的事情。 这使得我的应用只需要缓存 JSON ( 页面,动作和/或者记录) 。 这意味着无论你是一些远程api开发者访问一个 JSON api,还是你的strait应用。 也就是说,我不需要 2个缓存,一个用于 JSON,一个用于 HTML 。 这似乎会把我的缓存存储在两半,并简化一些事情。

另一方面,我在想,我已经看到/经验,生成静态htmlserver-side,和缓存,似乎是更好的性能明智 跨浏览器 ;图形即时,不必等待,split-secondjavascript渲染。 StackOverflow似乎用纯HTML做一切,谷歌也一样,你可以告诉。 所有内容同时出现。注意,在 twitter.com 中,页面为. 5 -1秒,页面块为: javascript必须呈现 json 。 缺点是,对于任何动态( 像无尽的滚动或者网格),我都需要创建javascript模板。 现在我有了 server-side HAML模板,client-side javascript模板,还有更多的缓存。

我的问题是,对于如何解决这个问题,是否有任何共识? 从你的经验有哪些优缺点混合的两对和一种 100%?

更新:

为什么我还没有决定使用 100% javascript模板的原因是:

  • 性能。没有正式测试,但从我所见,原始html呈现比 javascript-generated html 跨浏览器 更快更流畅。 另外,我不知道移动设备如何处理动态 html performance-wise 。
  • 测试 。我有大量的集成测试,可以很好地使用静态 HTML 。因此切换到javascript-only需要 1个更专注的pure-javascript测试( jasmine ),2 ) 将javascript集成到capybara集成测试中。 这只是一个时间和工作的问题,但它可能很重要。
  • 维护 。清除 HAML 。 我喜欢 HAML,它很容易写,它打印漂亮的html 。 它使得代码整洁,使得维护变得容易。 使用 javascript,没有什么是简洁的。
  • SEO。我知道谷歌处理ajax /#!/path, 但没有抓住这将如何影响其他搜索引擎和老式浏览器如何处理它。 似乎需要一个重要的设置。
时间:原作者:6个回答

0 0

持久私有数据存储。

你需要一个服务器来存储不同级别的公共/私有访问数据。 你还需要一个服务器来安全地关闭源信息。 你需要一台服务器来做你不想在客户端做的繁重工作。 复杂数据查询最好留给数据库引擎。 对javascript的索引和搜索还没有优化。

你也有一些老浏览器的问题。 如果你没有运行 ff4/Chrome 或者 IE9,那么在客户端和服务器上的数据操作和页面构造之间会有很大的差异。

我自己将尝试构建一个完全使用MVC框架的web应用程序,但是仍然使用服务器来连接安全和优化的数据库。

但是总的来说,应用程序实际上可以完全用javascript构建,并且使用模板。 各种构造和javascript引擎已经足够先进了。 有足够的流行框架来做这个。 纯 javascript web应用程序不再是实验和 Prototype 。

哦,如果是这样的框架,那么看看 backbone.js


安全


别忘了我们不信任客户。 我们需要服务器端验证。JavaScript被解释,动态,可以在运行时进行操作。 我们从不信任客户端输入。

原作者:
0 0

我曾经混合使用这两种方法,然后切换到客户端的渲染,完全是因为它很难正确处理大量的JavaScript,否则。 作为一个完整的解决方案,可以推荐 JavaScriptMVC 框架的方法。

它有一个名为EJS的视图渲染引擎,它可以将你的视图压缩为普通的JavaScript,用于你的应用程序的生产构建。 这使得它非常快速的( 所有的HTML都会被你的单一压缩的JavaScript文件预先加载,所以一旦你收到了你的模型JSON数据,它就会被渲染) 。 我个人无法注意到EJS呈现和传输普通HTML之间的性能差异。

然后,对于你的API,遵循REST原则,缓存是关键的约束之一。 因此,如果你的应用程序支持JSON数据的HTTP缓存,并使用压缩的客户端模板,你甚至可以看到性能改进。

原作者:
0 0

我可能会离开这里,但是,。

你曾经查看过 CouchDB? (我没有加入w/顺便说一句)我可能错了,但你的情况听起来可能是一个完美的适合使用apache CouchDB 我自己还没有真正使用它但是我仔细看了一会回来,这是一个非常有趣的数据库。

它是一个基于文档的数据库,使用 REST API 来连接( 非常通用且易于使用) 。 这也是非常的JSON为中心,非常快速和一个小小的足迹;他们说它可以驻留在电话上和其他嵌入式太使用,但同时也应该是极具可伸缩性的( 向上那是) 。 如果你是一个大的JS用户( 这听起来你是),那么你就可以在家里使用它了。

我只是认为它可能派上用场的任意数量的方式,提出了在这里,我想可以插话,只是为了给你一个想法的存储选项:)

原作者:
...