哪个JavaScript框架通常用于高性能网站?

Man*_*sai 10 javascript jquery gwt dojo frameworks

有不同的JavaScript框架,如jQuery,Dojo,mooTools,Google Web Toolkit(GWT),YUI等.其中哪一个适用于高性能网站?

Eug*_*kin 14

(完全免责声明:我是Dojo开发人员,这是我的非官方观点).

所有主要库都可以在高负载情况下使用.有几件事需要考虑:

初始加载

初始负载会影响您的响应时间:从请求网页到响应以及处于工作模式.琐碎的事情是:

  • 将多个JavaScript文件连接在一起(也适用于CSS文件)
  • 最小化和/或压缩您的JavaScript

我们的想法是减少发送 - 对服务器有益,对客户有利.

不那么琐碎的事情:

  • 以这种方式构建程序,以便在没有加载所有模块的情况下运行

后者的示例:将模块划分为必要(例如,核心逻辑)和非必要(例如,帮助程序:工具提示,提示,验证程序,帮助工具,各种"渐进增强程序"等).我们的想法是,经常有些东西对于频繁的用户来说并不重要,但对于临时用户来说很好⇒他们可能会被推迟.

我们可以先加载基本模块,然后异步加载其余模块.示例:如果用户想要编辑对象,我们需要先显示它,之后我们有几百毫秒来加载其余的:查找表,提示等.

显然,当您使用的框架支持异步加载模块时,它会有所帮助.Dojo内置了这个工具.

分发文件

大家都知道,由于浏览器对来自同一站点的并行下载数量的限制,从不同的域加载资源(图像,CSS,JavaScript)是有益的:

  • 如果用户的线路有足够的带宽,我们可以并行下载更多 - 这几天几乎总是如此
  • 我们可以设置针对服务静态文件优化的Web服务器:巨大的磁盘缓存,小型工作者,保持活动,异步服务等等
  • 我们可以删除在提供静态文件时不需要的所有不必要的功能:会话,cookie等

JavaScript应用程序中经常被忽视的一个优化是使用CDN:

  • 您的网站可以受益于CDN的地理分布(文件可以从最近/最快的服务器提供)
  • 用户可能在其缓存中有所需文件,如果它们被其他应用程序使用
  • 中间/公司缓存增加了所需文件已被缓存的可能性
  • 最后但并非最不重要的:这些是​​你不服务的文件 - 考虑一下

Dojo再次支持CDN,并由AOL CDNGoogle CDN公开发布.后者几乎带有所有流行的JavaScript工具包.显然你可以创建自己的CDN和你自己的CDN和特定于应用程序的Dojo构建,如果你觉得你需要它 - 它是微不足道的并且有很好的文档记录.

通信带宽

对于不同的工具包,这有何不同?XHR是XHR.

您需要尽可能减少服务器上的负载.分析所有流量并考虑通过管道发送多少静态/不可变的内容.例如,通常很多HTML在多个页面上都是冗余的:标题,页脚,菜单等.你真的需要每次都发送所有这些吗?

一个显而易见的解决方案是从使用JavaScript的静态HTML +"渐进增强"转变为真正的"单页"JavaScript应用程序.同样,这是一个经常被忽视但最有价值的优化.

虽然这个想法听起来很简单,但实际上它并不像看起来那么简单.一旦我们从单行开始到应用程序,我们就会遇到过多的问题,其中最大的问题是包装:您的组件是什么,工具包提供了哪些组件,以及如何打包和交付它们.

Dojo为常规类提供了模块,良好的OOP,小部件(可选HTML和相关行为的组合)以及许多可以使用它们的工具.您可以:

  • 按需加载模块而不是在头部
  • 异步加载模块
  • 自动查找模块之间的所有依赖关系并创建"构建" - 如果您的应用程序很大且需要多个图层,则在简单情况下使用一个或多个文件
  • 在进行"构建"时,它可以为您的小部件内联所有HTML代码段,优化CSS以及缩小/压缩JavaScript
  • Dojo可以在HTML中自动查找和实例化小部件,从而节省了大量的样板代码
  • 还有更多

在客户端构建应用程序时,所有这些功能都有很大帮助.这就是我喜欢Dojo的原因.

显然,有更多的方法来优化高负载网站,但根据我的实践,这些是JavaScript框架最具体的.


And*_*ore 11

很简单:所有这些.

构建所有框架是为了尽可能提供最快的性能,并为开发人员提供有用的功能和工具.您的选择应该基于您的要求.

JavaScript在客户端运行,因此没有一个会影响您的服务器性能.服务器端唯一的区别是用于将.js文件传输到客户端的带宽量.

我个人喜欢MooTools,因为它满足了我的要求,也坚持我的编码理念.很多人采用jQuery(我个人不喜欢它,并不意味着它不是很好).我没有用过其他的.

但没有一个比另一个更好,这都是需求和个人偏好的问题.