我要投稿 投诉建议

JavaScript的优化心得体会

时间:2021-03-31 20:39:48 心得体会 我要投稿

JavaScript的优化心得体会

  性能对任何编程语言或系统来说都是一个很重要的问题,对JavaScript来说更是如此。

JavaScript的优化心得体会

  ● JavaScript代码是从服务器原封不动地发送到客户端的,代码越大,下载所需的时间和带宽越多。

  ● JavaScript在浏览器中解释,而不是编译好的。

  ● JavaScript代码通过DOM API修改HTML页面来与用户交互。对JavaScript开发人员来说,这是功能强大的高级模型,但对DOM所做的每个简单修改都将导致浏览器的页面 渲染引擎执行一系列复杂的操作。对DOM看似细微的修改常常导致需要占用比预期的多得多的CPU周期。

  诸如Gmail和基于Ajax的Yahoo! Mail(编写本书时仍处于测试阶段)等Web应用程序都对JavaScript性能提出了挑战。大量的人力被投入到这些Web应用程序中,它们在最新的 计算机中可能运行顺畅,但在较旧的计算机中可能反应迟钝,而在这些旧计算机中运行相应的桌面应用程序没有任何问题。

  在下一小节中将介绍在JavaScript中最常见的两个性能问题的解决方案。

  3.2.1 缩短JavaScript的下载时间

  大多数编程语言要么是编译型的,要么在代码安装的计算机中运行,或两者兼而有之。例如,使用诸如Python、PHP或Perl等脚本语言 时,代码在执行前不需要通过网络传输,而在本地运行。诸如Java等其他语言的代码被编译成二进制文件,可在执行前通过网络传输。考虑到这种情况,采用了 大量措施以使二进制格式更加紧凑。

  JavaScript不属于上述任何一种情况,其源代码及用到的库将被浏览器按原样下载。因此,JavaScript代码的`总体大小以及如何 将代码打包为文件对页面性能的影响巨大,这在刚开始编码时可能无关紧要,但随着编写的代码和使用的库越来越多,很快将导致下载页面使用的 JavaScript代码时需要相当长的时间。

  为最大限度地缩短下载时间,应这样做:

  ● 除非每个页面有不同的JavaScript,否则不要直接将JavaScript代码放在HTML中,而在HTML中引用JavaScript文件。如果一定要在页面中包含JavaScript,这样的代码不能太长。

  ● 减少在页面中包含的JavaScript文件数。不需要走极端,将所有代码放到一个文件中。包含不超过5个文件是可行的,但如果包含超过20个文件就要三 思而行。这些数字只是象征性的,如果这是个问题,应进行测试看看在单个页面中使用多少文件将影响网站的性能。

  ● 减少使用的库。如果使用大量不同来源的库,它们的有些代码很可能是重复的。例如,每个库都可能包含处理DOM事件的代码,这是一种浪费,因为这些代码可以 共享。选择一个能够解决大量问题且模块化的库,这样可只包含所需的子集。使用来自一个主要库的代码还有其他好处:将减少依赖关系,从而降低不兼容的可能 性;升级到新版本更容易;通常来说,大型库将获得更大社区的支持,因此更新更频繁,新特性更多。本章后面的内容将更详细地介绍JavaScript库。

  很多库都会发布其代码的两个版本:完整版和精简版。

  ● 完整版适合用于阅读和修改库的代码。它包含缩进和注释,对开发人员来说可读性更高。

  ● 精简版适合用于部署网站。这种版本是基于完整版自动创建的:删除了注释和缩进;通常所有代码位于一行中;有时候不暴露的变量被重命名为很短(而晦涩)的名称。

  部署网站时,务必使用精简版。根据自己编写的代码长度,可能要使用工具创建JavaScript文件的精简版。这样的工具有很多,其中包括开源(GPL)的ECMAScript Cruncher(ESC)。

  3.2.2 最大限度地减少DOM更新

  为完成任何有趣的工作,代码必须修改DOM。然而,修改DOM的开销非常高。显然,为处理修改页面内容的DOM API调用,浏览器必须做大量工作。更令人惊讶的是,调用不修改页面的方法(如注册)可能非常慢。

  另外,请注意遍历大量DOM对象的代码,如遍历documet.all以查找特定元素的代码或document. getElementByName()。这些代码的执行时间将随页面的增大而增长。

【JavaScript的优化心得体会】相关文章:

关于javascript的心得体会03-02

Oracle优化的心得体会03-31

企业站优化心得体会04-22

优化发展环境心得体会03-03

优化课堂教学设计心得体会03-14

优化经济的标语03-30

优化团体作文05-22

优化阅读训练指导04-21

优化情绪,释放压力03-21