2

我通常是一个有创造力的女孩,但现在我找不到任何好的解决方案。有基于 javascript 和服务器端生成的 HTML(比如表单行或表格行),在两种情况下都完全相同。它是在您打开页面时在服务器端生成的(对于 Google,它必须保持在服务器端),它是由 AJAX 生成的,用于显示实时更新或通过新的空行扩展表单。

问题是:HTML 生成例程现在存在两次,并且您知道 DRY(不要重复自己),是吗?每次发生变化时,我都必须编辑 2 个位置,这不符合我对好软件的看法。

结合基于 javascript 和服务器端 HTML 生成的最佳策略是什么?

PS:服务器端语言总是不同的(PHP、RoR、C++)。

PPS:请不要给我 Node.JS 的答案,我可以自己解决这个问题 ;-)

4

5 回答 5

1

这是 Ruby on Rails 解决方案:

每个模型都有自己的部分。例如,如果您有模型 Post 和 Comment,您将有 _post.html.erb 和 _comment.html.erb

当您调用“render @post”或“render @comment”时,RoR 将查看对象的类型并决定使用哪个部分。

这意味着您可以在许多不同的视图中以相同的方式对对象进行红化。
即在正常响应或 AJAX 响应中,您总是只需调用“render @post”

编辑
如果你想在 JS 中渲染东西而不连接到服务器(例如,你从不同的服务器或其他任何地方获取数据),你可以用我提到的方法制作一个 JS 模板,将它发送到客户端,然后有客户端使用该模板呈现新对象。对于 JS 模板插件,请参见:http: //api.jquery.com/category/plugins/templates/

于 2011-04-12T20:23:50.550 回答
1

制作一个服务器处理程序来生成 HTML。当您打开页面时从服务器调用该代码,当您需要进行实时更新时,向该处理程序发出 AJAX 请求,这样您就不必在客户端中重复代码。

于 2011-04-12T20:25:09.550 回答
1

结合基于 javascript 和服务器端 HTML 生成的最佳策略是什么?

如果您想保持干燥,请不要尝试将它们结合起来。坚持在服务器上生成 HTML(显然是 SEO 的首选选项),或者在客户端上生成。

于 2011-04-12T20:21:44.573 回答
0

创建一个在服务器上生成 HTML 并返回它的页面,例如:

http://example.com/serverstuff/generaterows?x=0&y=foo

如果您在服务器上需要它,请访问该链接,或调用访问链接调用的子例程。如果您在客户端需要它,请使用 AJAX 访问该链接,这将最终调用相同的服务器代码。

还是我错过了什么?(我不确定“由 AJAX 生成”是什么意思)。

如果您有两种不同的语言,我看不到另一种解决方案。要么你有一个 PHP/RoR/whatever to JavaScript 编译器(所以你有一个用一种语言编写的源代码并用另一种语言自动生成),或者你有一个生成输出,另一个读入。

于 2011-04-12T20:23:55.153 回答
0

加载没有任何行/数据的页面。

然后运行您的 Ajax 例程以在页面加载时第一次获取数据

然后在需要时/根据您的代码决定获取更新/新记录。

于 2011-04-12T20:38:23.803 回答