作家
登录

技术进阶:通过来JavaScript 性能调优提高 Web 应用性能

作者: 来源: 2018-02-05 09:37:42 阅读 我要评论

str +="str1"

新的浏览器对"+="做了优化,机能略快于数组的"join"办法。在不久的将来更新版本浏览器可能对"+"也会做优化,所以那时我们可以直接写:str += "str1" + "str2"。

隐式类型转换

参考如下代码:

这里我们可以看到,"images","widget","combination"属于局部变量,在层 1。"document","myObj"属于全局变量,在层 2。

清单 11. 隐式类型转换

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

我们用局部变量来代替"myObj"的第 2 层的"container"对象。如不雅有大年夜量的┞封种对对象深层属性的拜访,可以参照以上方法进步机能。

1.4字符串(String)相干

清单 12. 避免隐式类型转换

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

如许一来,变量"str"作为一个字符串对象,就不会有这种隐式类型转换的过程了,如许一来,效力会明显进步。

字符串匹配

JavaScript 有 RegExp 对象,支撑对字符串的┞俘则表达式匹配。是一个很好的对象,然则它的机能并不是异常幻想。相反,字符串对象(String)本身的一些根本办法的效力是异常高的,比如"substring","indexOf","charAt"等等,在我们须要用正则表达式匹配字符串时,可以推敲一下:

1)是否可以或许经由过程字符串对象本身支撑的根本办法解决问题。

2)是否可以经由过程"substring"来缩小须要用正则表达式典范围。

关于正则表达式对象,还有一点须要留意,参考如下代码:

清单 13. 正则表达式

· getElementsByClassName()

【编辑推荐】

  1. HackerRank: JavaScript人才大年夜热 开辟者却更爱Python
  2. 苹不雅终于要给Windows 10开辟第一个应用软件了
  3. CSRF进击与防御,Web安然的第一防地(源码,拭魅战,5分钟科普文)
  4. Web全栈工程师应当会什么
  5. 2018年为Web开辟人员推荐的Python框架
【义务编辑:张燕妮 TEL:(010)68476606】

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

这里,我们往"match"办法传入"/^s*extras/"是会影响效力的,它会构建临时价为"/^s*extras/"的┞俘则表达式对象,履行"match"办法,然后烧毁临时的┞俘则表达式对象。我们可以如许做:

清单 14. 应用变量

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

如许就不会有临时对象了。

setTimeout 和 setInterval

"setTimeout"和"setInterval"这两个函数可以接收字符串变量,然则会带来竽暌闺之前谈到的"eval"类似的机能问题,所以建议照样直接传入函数对象本身。

应用提前退出

清单 15. 应用提前退出

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

代码 2 多了一个对"name.indexOf( … )"的断定,这使得法度榜样每次走到这一段时会先履行"indexOf"的断定,再履行后面的"match",在"indexOf"比"match"效力高很多的前提下,如许做会削减"match"的履行次数,大年夜而必定程度的进步效力。

2. DOM 操作机能调优

JavaScript 的开辟离不开 DOM 的操作,所以对 DOM 操作的机能调优在 Web 开辟中也是异常重要的。

2.1 Repaint 和 Reflow

Repaint 也叫 Redraw,它指的是一种不会影响当前 DOM 的构造和构造的一种重绘动作。如下动作会产生 Repaint 动作:

弗成见到可见(visibility 样式属性)

色彩或图片变更(background, border-color, color 样式属性)

不改变页面元素大年夜小,外形和地位,但改变其外不雅的变更

Reflow 比起 Repaint 来讲就是一种加倍明显的变更了。它重要产生在 DOM 树被操作的时刻,任何改变 DOM 的构造和构造都邑产生 Reflow。但一个元素的 Reflow 操作产生时,它的所有父元素和子元素都邑放生 Reflow,最后 Reflow 必定会导致 Repaint 的产生。举例解释,如下动作会产生 Repaint 动作:

浏览器窗口的变更

DOM 节点的添加删除操作

一些改变页面元素大年夜小,外形和地位的操作的触发

2.2 削减 Reflow

经由过程 Reflow 和 Repaint 的介绍可知,每次 Reflow 比其 Repaint 会带来更多的资本消费,我们应当尽量削减 Reflow 的产生,或者将其转化为只会触发 Repaint 操作的代码。

参考如下代码:

清单 16. reflow 介绍

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

这是我们经常接触的代码了,然则这段代码会产生 3 次 reflow。再看如下代码:

清单 17. 削减 reflow

技巧进阶:经由过程来JavaScript 机能调优进步 web 应用机能

这里便只有一次 reflow,所以我们推荐这种 DOM 节点操作的方法。


  推荐阅读

  一文让你学会所有的python模块使用

如不雅你退出 Python 说冥器并从新进入,你做的任何定义(变量和办法)都邑损掉。是以,如不雅你想要编写一些更大年夜的法度榜样,为预备说冥器输入应用一个文本编辑器会更好,并以那个文>>>详细阅读


本文标题:技术进阶:通过来JavaScript 性能调优提高 Web 应用性能

地址:http://www.17bianji.com/lsqh/40502.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)