我正在制作一个Web应用程序,我想知道我应该在多长时间内使用JavaScript。
这是一个简单的应用程序,可以在一个页面中进行,因此看起来像“app-like”并且快速响应(使用直接DOM操作与AJAX结合)。
我认为我可以采取三种一般方式:
A)在服务器上生成所有HTML,在JavaScript中进行微小的DOM操作,使用AJAX将较小的更改发布到服务器,然后重新加载页面以进行更大的更改。
B)在服务器上生成所有HTML,但重新加载页面,而是使用更多的AJAX让服务器返回准备好的HTML以插入各种HTML。
C)在JavaScript中生成所有HTML,让服务器只返回带有要插入HTML的数据的JSON对象。
我对选项C感到好奇的原因是,它会给人一种有趣的MVC感觉。服务器执行模型,客户端执行视图。
请注意,缺少JavaScript的客户不是问题,我会使用JavaScript框架来确保浏览器兼容性。
有没有人有这方面积极的经验来平滑开发过程?这可能是一个具有特定名称的既定方法,甚至?
答案 0 :(得分:0)
我们产品的webclient完全由选项C完成。但是,我不能说很多好处,因为在我们的案例中它开始是必要的:a)它甚至在最古老的JS框架的几天内开始正在做他们的婴儿步骤; b)该项目有很多程序员在Java / OOP方面经验丰富,但对html的声明性感到不安。
那么,当时做了什么 - 是一个“OO-JS”框架,它使用Javascript可用的所有OO-hacks(例如继承黑客,虚假封装等)来制作一个“感觉”的API “大多数人喜欢Java编码 - 你有一个对象的层次结构,你可以编写一些功能样式的代码来修改页面的html。这一切都没有触及html本身。回到当天它很酷,现在很正常。
所以我们今天使用这个自制框架(现在迁移到第三方框架的成本太高了),它的功能与最初的预期相同。我们的页面不过是一堆JS导入(也是i18n'ed消息,各种文本常量等)以及在DOMContentLoaded
事件后触发整个过程的函数。在那之后 - 完成其余的工作纯粹是Javascript。
现在,我们的产品使用了由许多ajax调用驱动的非常丰富的UI,我不能诚实地建议在任何其他情况下使用方法C - 可以实现更简单的UI 。但我相信你很清楚。
答案 1 :(得分:0)
某些模板系统支持服务器端和客户端。编写完成后,可以在两侧使用模板页面。
通过检测HTTP请求是AJAX还是旧样式,服务器端可以发送JSON字符串(作为模板的数据映射)而不是呈现的HTML内容。它们使您能够顺利地在三个计划之间切换。
其中一个模板系统比较可以在http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
找到答案 2 :(得分:0)
几年来,我们几乎在所有的Web应用程序中都使用方法C.这有一些好处,特别是当您的系统负载很重时。在我们的体系结构中,有一组Web服务器提供静态内容(.html,.js,.css,.png等文件),同时将动态请求转发到另一个应用程序服务器集群(基于URL模式的REST请求) )。通常,这些应用服务器是所有业务逻辑和与数据库或其他后端系统的通信的瓶颈。因此,在许多客户端上生成HTML会使构建服务器页面的负担远离您的几个应用程序服务器。此外,您正在减少流量,因为JSON对象通常比整个HTML标记小得多,超过了必须传输一次的额外JavaScript代码(无论如何都可以通过浏览器缓存)。
现在在你的.html文件中,您仍然可以选择使用标记进行静态标记,或者以空<body/>
开始,并使用JavaScript创建整个DOM树,这是我最喜欢的方式,因为我不喜欢混合这两种方法。
另一个考虑因素是您是否希望被搜索引擎找到。它们不会为动态创建的HTML编制索引,因此在这种情况下,服务器页面可能有意义。