3

我正在制作一个 Web 应用程序,我想知道我应该在多大程度上使用 JavaScript。

这是一个可以在一个页面中制作的简单应用程序,因此看起来“类似应用程序”并且响应迅速(使用直接 DOM 操作与 AJAX 相结合)。

我看到了三种一般的方法:

  • A) 在服务器上生成所有 HTML,在 JavaScript 中进行少量 DOM 操作,使用 AJAX 将较小的更改发布到服务器,并重新加载页面以进行较大的更改。

  • B) 在服务器上生成所有的 HTML,但少重新加载页面,而是使用更多的 AJAX 让服务器返回准备好的 HTML 以插入到各种 .

  • C) 用 Ja​​vaScript 生成所有 HTML,并让服务器只返回 JSON 对象,其中包含要插入 HTML 的数据。

我对选项 C 感到好奇的原因是它会给事物带来有趣的 MVC 感觉。服务器做模型,客户端做视图。

请注意,缺少 JavaScript 的客户端不是问题,我会使用 JavaScript 框架来确保浏览器兼容性。

有没有人有这方面的积极经验,可以使开发过程顺利进行?这可能是一种具有特定名称的既定方法吗?

4

3 回答 3

0

一些模板系统同时支持服务器端和客户端。编写完成后,双方都可以使用模板页面。

通过检测 HTTP 请求是 AJAX 还是旧样式,服务器端可以返回 JSON 字符串(作为模板的数据映射)而不是呈现的 HTML 内容。它们使您能够在三个计划之间顺利切换。

可以在http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more找到这样的模板系统比较之一

于 2013-08-17T10:05:55.967 回答
0

我们产品的 webclient 完全由选项 C 制成。但是,我不能说太多好处,因为在我们的案例中,它是作为必需品开始的:a) 它是在即使是最古老的 JS 框架也在做它们的时候开始的。婴儿步;b) 该项目有很多具有 Java/OOP 经验的程序员,但他们对 html 的声明性感到不安。

所以,当时所做的是一个“OO-JS”框架,它使用了 Javascript 可用的所有 OO-hacks(例如继承 hack、假封装等)来制作一个“感觉”最像的 API Java 编码——你有一个对象层次结构,你可以编写一些修改页面 html 的函数式代码。所有这一切甚至都没有触及 html 本身。以前很爽,现在很正常。

所以我们至今仍在使用这个自制的框架(现在迁移到 3rd-party 框架的成本太高了),它的功能仍然与最初预期的方式几乎相同。我们的页面只不过是一堆 JS 导入(还有 i18n'ed 消息、各种文本常量等)加上一个在DOMContentLoaded事件时触发整个过程的函数。在那之后——剩下的工作完全是用Javascript来完成的。

现在,我们的产品使用由大量 ajax 调用驱动的非常丰富的 UI,老实说,我不建议在任何其他情况下使用方法 C——更简单的 UI 可以通过采用 A 或 B 方法更容易实现。但我相信你对此非常了解。

于 2013-08-17T09:07:28.790 回答
0

几年来,我们几乎在所有 Web 应用程序中都使用方法 C。这有一些好处,尤其是当您的系统处于重负载下时。在我们的架构中,有一个 Web 服务器集群提供静态内容(.html、.js、.css、.png 等文件),而动态请求被转发到另一个应用程序服务器集群(基于 URL 模式的 REST 请求)。通常,这些应用服务器是所有业务逻辑和与数据库或其他后端系统通信的瓶颈。因此,在许多客户端上生成 HTML 可以将构建服务器页面的负载从您的少数应用服务器中分离出来。

现在,在您的 .html 文件中,您仍然可以选择使用标签进行静态标记或从空开始<body/>并在 JavaScript 中创建整个 DOM 树,这是我最喜欢的方式,因为我不喜欢混合使用这两种方法。

另一个考虑因素是您是否希望被搜索引擎找到。它们不会为您动态创建的 HTML 编制索引,因此在这种情况下,服务器页面可能有意义。

于 2013-08-17T13:01:14.593 回答