【问题标题】:Which JavaScript framework is generally used for high performance websites?哪个 JavaScript 框架通常用于高性能网站?
【发布时间】:2010-11-14 14:00:25
【问题描述】:

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

【问题讨论】:

  • 这取决于你使用框架做什么。
  • GWT 不是 javascript 框架,它是 Java 框架
  • GWT 是用 JAVA 编写的 javascript 框架

标签: javascript jquery gwt frameworks dojo


【解决方案1】:

嗯——作为一个例子,stackoverflow 依赖于 jQuery(并使用 google apis 链接)——它是最快和最流行的库之一,不仅如此,而且我认为它是最容易使用的。您将在网站上进行什么类型的行为?这真的完全取决于您的需求。

【讨论】:

    【解决方案2】:

    很简单:全部

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

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

    我个人很喜欢MooTools,因为它满足了我的要求,也符合我的编码理念。很多人采用jQuery(我个人不喜欢,不代表不好)。其他的我没用过。

    但没有一个比另一个更好,这都是要求和个人喜好的问题

    【讨论】:

    • +1 你打败了我。该问题缺少的关键信息是高性能的含义。快速的初始加载时间?漂亮的颜色?能够以 10000x10000 像素大小显示流媒体电影吗?在大多数情况下(初始加载时间除外),瓶颈将是服务器,或者带宽不是客户端。
    • 并非所有框架的速度都相同。由于架构差异,有些天生就比其他慢。 Taskspeed 虽然有点人为和​​不一致,但清楚地展示了这些差异。
    【解决方案3】:

    一如既往,答案是:视情况而定。你在说什么样的表演?下载速度?使用最小化器,可能没有太大区别。或者客户端性能,你用它做什么?

    但是,我建议如果您追求原始性能,我根本不会使用框架,并创建更难维护的低级 javascript。

    可以在YUI site 上找到一些有用的信息。

    【讨论】:

      【解决方案4】:

      我真的不认为这有什么不同。大的似乎混合使用了 Jquery 和原型以及其他。

      坦率地说,当我们谈论客户端技术时,您在访问量很大的网站上使用什么并没有什么区别。加载文件后,实际上并没有任何开销。因此,如果您只想做一件简单的事情并且多个框架都支持它,请使用文件大小较小的任何一个(当然,如果它执行得非常糟糕,请使用另一个!)

      话虽如此,谷歌托管了很多框架,所以即使这也不是问题。我使用由 Google 托管的 Jquery,非常高兴。

      http://code.google.com/apis/ajaxlibs/

      后端和服务器应该使用什么是一个完全不同的问题,你会得到一千个不同的答案!

      【讨论】:

        【解决方案5】:

        正如其他答案已经解释的那样,框架不会成为您网站性能的瓶颈——相反,许多其他因素才是。如果您使用流行的框架并从它们的流行 URL(例如 AOL 或 Google)加载它们,它们很可能会缓存在您用户的浏览器中,因此您也不必太担心。

        但是,如果您完全关心性能,请务必查看 Steve Souders; 的作品 - 包括他的两本书,“高性能网站”和“更快的网站”。

        我有偏见,因为史蒂夫是朋友和同事(我们也有共同的出版商),但我赞扬和钦佩他的作品,甚至在我们亲自见面并成为同事之前 --我主要是一个后端人员,就像他以前一样,所以我无法不佩服那些来自相同背景的人,他意识到,他几乎完全转向前端工作的正直和勇气到目前为止,这是用户感知性能的瓶颈(即,有人敢于将用户体验放在首位,当然,我们都对此表示敬意,但不要 总是练习,当那个“压倒一切的优先级”妨碍我们自己的专业专长、兴趣和技能时......)。

        【讨论】:

          【解决方案6】:

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

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

          初始加载

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

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

          我们的想法是少发送——对服务器有利,对客户端有利。

          不那么琐碎的事情:

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

          后者的示例:将您的模块划分为必要的(例如,核心逻辑)和非必要的(例如,帮助器:工具提示、提示、验证器、帮助工具、各种“渐进增强器”等)。这个想法是,经常有些事情对频繁用户来说并不重要,但对普通用户来说却很好⇒他们可以延迟。

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

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

          分发文件

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

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

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

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

          同样,Dojo 长期支持 CDN,并由 AOL CDNGoogle CDN 公开分发。后者也携带了几乎所有流行的 JavaScript 工具包。显然,如果您觉得需要,您可以创建自己的 CDN 以及您自己的 CDN 和应用程序特定的 Dojo 构建——它很简单而且有据可查。

          通信带宽

          不同的工具包会有什么不同? XHR 就是 XHR。

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

          一个明显的解决方案是从静态 HTML + 使用 JavaScript 的“渐进增强”转移到真正的“单页”JavaScript 应用程序。同样,这是一个经常被忽视但最有价值的优化。

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

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

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

          所有这些功能都有助于在客户端构建应用程序。 That's why I like Dojo.

          显然有更多方法可以优化高负载网站,但根据我的实践,这些方法最适用于 JavaScript 框架。

          【讨论】:

            【解决方案7】:

            我建议你看看 Dojo。

            Dojo 1.6 也是第一个(也是唯一一个)流行的 JavaScript 库,可以成功地与 Closure Compiler 的高级模式一起使用,它具有巨大的大小、性能和混淆优势——除了 Google 自己的 Closure 库之外,是。

            http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

            换句话说,使用 Dojo 的程序可以被 100% 混淆——甚至是库本身。

            编译后的代码与纯文本代码具有完全相同的行为,只是它更小(平均比压缩器小 25%)、运行速度更快(尤其是在移动设备上),并且几乎不可能进行逆向工程,即使在通过美化器,因为整个代码库(包括库)都被混淆了。

            仅“缩小”的代码(例如 YUI 压缩器、Uglify)可以在通过美化器后轻松进行逆向工程。

            【讨论】:

              猜你喜欢
              • 2010-12-08
              • 1970-01-01
              • 2010-10-31
              • 1970-01-01
              • 2011-01-30
              • 1970-01-01
              • 1970-01-01
              • 2011-11-04
              相关资源
              最近更新 更多