我正在开发一个Web应用程序,目前我已经用html / js / css编写了整个网站,而在后端,我有servlet承载一些RESTFUL服务。所有表示逻辑都是通过获取json对象并通过javascript修改视图来完成的。
该应用程序本质上是一个搜索引擎,但是它将具有不同角色的用户帐户。
我一直在研究Play和Spring等框架。我是Web开发的新手,所以我想知道使用服务器端页面呈现会带来哪些优势?
是:速度吗?更轻松的开发和工作流程?访问现有图书馆?更多?上述所有的?
我正在开发一个Web应用程序,目前我已经用html / js / css编写了整个网站,而在后端,我有servlet承载一些RESTFUL服务。所有表示逻辑都是通过获取json对象并通过javascript修改视图来完成的。
该应用程序本质上是一个搜索引擎,但是它将具有不同角色的用户帐户。
我一直在研究Play和Spring等框架。我是Web开发的新手,所以我想知道使用服务器端页面呈现会带来哪些优势?
是:速度吗?更轻松的开发和工作流程?访问现有图书馆?更多?上述所有的?
Answers:
服务器端HTML呈现:
*当UI要求非常适合框架时。
客户端HTML呈现:
**当用户界面很大程度上是自定义的时,会有更多有趣的交互。另外,我发现在浏览器中使用解释代码的编码明显比等待编译和服务器重新启动要快。
您可能还会考虑使用前端/后端模板系统(例如mustache)的轻量级后端实现的混合模型。
服务器端HTML生成:
客户端HTML生成:
请注意,在成功的移动网站的情况下,客户端生成是完成此操作的方式,显然,现代浏览器(基于WebKit的浏览器在移动市场中约占70-80%)的效率更高。
LinkedIn上有一篇文章以ustry.js为例介绍了客户端方法的优势:“将JSP抛在脑后:将LinkedIn迁移到ustust.js客户端模板”
这取决于您的要求。如果您需要一个高性能,低延迟的解决方案,该解决方案取决于许多小任务,则可以采用与您描述的结构类似的结构。但是,在Java,PHP和C#中,最常见的解决方案并不是默认设置。
大多数Web应用程序都非常依赖数据库-它们中的大多数是如此之多,以致页面至少要经过一个调用就无法呈现。显然,由于以下几个原因,您不想公开公开数据库:
因此,当您需要数据库时,可以使用与Java,C#,PHP等类似的语言。它们的最简单生成方法如下:使用模板语言(最著名的是PHP,但JSP和ASP是另外两种非常通用的语言)来构造页面。该语言提供了调用其他模块的构造。在PHP中,通常使用MVC模式在页面或另一个PHP文件中。在JSP中,您可以使用scriptlet或JSP表达式语言。这些其他模块可能需要繁重的工作来连接到数据库,执行逻辑并将值返回到您的视图层。最终结果是生成的HTML页面,呈现在服务器上并发送给客户端。
当数据库与页面渲染器位于同一网络上时,您还将获得更好的性能。客户端只需要执行一个请求就可以接收一个页面-您可能需要执行10-15个DB请求,才能获得用户所需的所有信息。如果客户端必须全部完成,那么网络上的毫秒级延迟将为数秒至数分钟。
当系统变得更大时,关注点和核心能力的分离变得至关重要。HTML非常适合显示。Javascript适合动态内容。SQL非常适合查询数据库,而其他语言则擅长业务逻辑。作为开发人员,我们的工作是使用所有可用的工具来构建可维护的系统。易于开发是一个良好系统的重要组成部分。在我看来,它几乎与性能和可用性一样重要。伟大的系统会随着时间而发展。糟糕的系统从一开始就编写得很糟糕,并且从未得到改进。
you can't write SQL in Javascript
真?!您是否曾经看过 Java的StackOverflow问题?不幸的是,我希望与众不同。当然,这是您可能在客户端代码中可能做的最糟糕的事情,但是...
移动客户端通常受功率,带宽和内存限制。最好在服务器上为它们呈现页面。
对于桌面客户端,您可以考虑发送js + json以在客户端上呈现页面,使其动态可更新等。
服务器端渲染的一个巨大优势是可访问性-基于javascript的应用程序对于视力不佳的人仍然是一个大问题。那就是您可能想要迎合的一个叫做“ googlebot”的盲人。他的JavaScript也不太好。