广告
返回顶部
首页 > 资讯 > 精选 >如何提高web前端的性能优化
  • 102
分享到

如何提高web前端的性能优化

2023-06-08 09:06:37 102人浏览 泡泡鱼
摘要

如何提高web前端的性能优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前端性能优化是一个不断追求的过程,前面的文章虽然讲解了一些性能优化,但是关于性能优化的路还有很长,很多

如何提高web前端性能优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

前端性能优化是一个不断追求的过程,前面的文章虽然讲解了一些性能优化,但是关于性能优化的路还有很长,很多东西都没有提及。
运算符

使用运算符时,尽量使用+=,-=、*=、\=等运算符号,而不是直接进行赋值运算。

2、位运算。

当进行数学运算时位运算较快,位运算操作要比任何布尔运算或算数运算快,如取模,逻辑与和逻辑或也可以考虑用位运算来替换。

有同学问,常见的js位运算符有哪些?常见的位运算符有“~,&,|,^,.<<,>>,>>>”等等。

关于位运算的应用,我前面也有文章提及,js运算符单竖杠“|”的用法和作用是什么?以及javascript实用技巧,js小知识大家可以去看看。

常规优化
1、switch语句。

若有一系列复杂的if-else语句,可以转换成单个switch语句则可以得到更快的代码,还可以通过将case语句按照最可能的到最不可能的顺序进行组织,来进一步优化。

例如:

function getCateGory(age) {    var category = "";    switch (true) {        case isNaN(age):            category = "not an age";            break;        case (age >= 50):            category = "Old";            break;        case (age <= 20):            category = "Baby";            break;        default:            category = "Young";            break;    };    return category;}getCategory(5);  //Baby

这样的稍微复杂一些的,我们尽量就不用if/else了,当然,简单的判断,还是推荐if/else。

2、减少页面的重绘

我的Jquery文章优化中,提及了这一项。

代码如下:

var str = "<div>这是一个测试字符串</div>";var obj = document.getElementsByTagName("body");for(var i = 0; i < 100; i++){    obj.innerhtml += str + i;}var obj = document.getElementsByTagName("body");var arr = [];for(var i = 0; i < 100; i++){    arr[i] = str + i;}obj.innerHTML = arr.join("");

3、传递方法取代方法字符串

一些方法例如setTimeout()、setInterval(),接受字符串或者方法实例作为参数。直接传递方法对象作为参数来避免对字符串的二次解析。

传递方法

setTimeout(test, 1);//good
传递方法字符串

setTimeout('test()', 1);//不能说bad,只能说not good

4、使用原始操作代替方法调用

方法调用一般封装了原始操作,在性能要求高的逻辑中,可以使用原始操作代替方法调用来提高性能。

原始操作

var min = a<b?a:b; //good
方法实例
var min = Math.min(a, b);//not good

5、定时器

如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。

6、最小化语句数

例如:

多个变量声明

var i = 1;var j = "hello";var arr = [1,2,3];var now = new Date();var i = 1,    j = "hello",    arr = [1,2,3],    now = new Date();

插入迭代值

var name = values[i];i++;var name = values[i++];

使用数组和对象字面量,避免使用构造函数Array(),Object()

var a = new Array();a[0] = 1;a[1] = "hello";a[2] = 45;var o = new Obejct();o.name = "bill";o.age = 13;var a = [1, "hello", 45];var o = {    name : "bill",    age : 13};

类型转换

1、把数字转换成字符串。

应用""+1,效率是最高。

性能上来说:""+字符串>String()>.toString()>new String()。

String()属于内部函数,所以速度很快。.toString()要查询原型中的函数,所以速度略慢。new String()最慢。

2、浮点数转换成整型。

错误使用使用parseInt()。

parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换。

应该使用Math.floor()或者Math.round()。

Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用的时间,速度是最快的。

循环
1、定义变量,避免每次获取

   var divs = document.getElementsByTagName("div");    for(var i = 0; i < divs.length; i++){       ...  }      var divs = document.getElementsByTagName("div");   for(var i = 0, len = divs.length; i < len; i++){       ... }

2、避免在循环中使用try-catch。

try-catch-finally语句在catch语句被执行的过程中会动态构造变量插入到当前域中,对性能有一定影响。

如果需要异常处理机制,可以将其放在循环外层使用。

循环外使用try-catch

try {  for ( var i = 0; i < 200; i++) {}} catch (e){}

3、避免遍历大量元素,尽量缩小遍历范围。

作用域链和闭包优化
1、作用域。

作用域(scope)是JAVASCRIPT编程中一个重要的运行机制,在JAVASCRIPT同步和异步编程以及JAVASCRIPT内存管理中起着至关重要的作用。 在JAVASCRIPT中,能形成作用域的有如下几点。

函数的调用with语句with会创建自已的作用域,因此会增加其中执行代码的作用域的长度。全局作用域。

以下代码为例:

var foo = function() {  var local = {};};foo();console.log(local); //=> undefinedvar bar = function() {  local = {};};bar();console.log(local); //=> {}local = {};// 这里的定义等效于global.local = {};

2、作用域链

在JAVASCRIPT编程中,会遇到多层函数嵌套的场景,这就是典型的作用域链的表示。

function foo() {  var val = 'hello';  function bar() {    function baz() {      global.val = 'world;'    };    baz();    console.log(val); //=> hello  };  bar();};foo();

3、减少作用域链上的查找次数

for(var i = 0; i < 10000; i++){    var but1 = document.getElementById("but1");}var doc = document;for(var i = 0; i < 10000; i++){    var but1 = doc.getElementById("but1");}

4、闭包

JAVASCRIPT中的标识符查找遵循从内到外的原则。

function foo() {  var local = 'Hello';  return function() {    return local;  };}var bar = foo();console.log(bar()); //=> Hello

闭包是JAVASCRIPT的高级特性,因为把带有内部变量引用的函数带出了函数外部,所以该作用域内的变量在函数执行完毕后的并不一定会被销毁,直到内部变量的引用被全部解除。所以闭包的应用很容易造成内存无法释放的情况。

良好的闭包管理。

循环事件绑定、私有属性、含参回调等一定要使用闭包时,并谨慎对待其中的细节。

循环绑定事件,我们假设一个场景:有六个按钮,分别对应六种事件,当用户点击按钮时,在指定的地方输出相应的事件。var btns = document.querySelectorAll('.btn'); // 6 elementsvar output = document.querySelector('#output');var events = [1, 2, 3, 4, 5, 6];// Case 1for (var i = 0; i < btns.length; i++) {  btns[i].onclick = function(evt) {    output.innerText += 'Clicked ' + events[i];  };}// Case 2for (var i = 0; i < btns.length; i++) {  btns[i].onclick = (function(index) {    return function(evt) {      output.innerText += 'Clicked ' + events[index];    };  })(i);}// Case 3for (var i = 0; i < btns.length; i++) {  btns[i].onclick = (function(event) {    return function(evt) {      output.innerText += 'Clicked ' + event;    };  })(events[i]);}

避开闭包陷阱

闭包是个强大的工具,但同时也是性能问题的主要诱因之一。不合理的使用闭包会导致内存泄漏。

闭包的性能不如使用内部方法,更不如重用外部方法。

由于IE 9浏览器的DOM节点作为COM对象来实现,COM的内存管理是通过引用计数的方式,引用计数有个难题就是循环引用,一旦DOM引用了闭包(例如event handler),闭包的上层元素又引用了这个DOM,就会造成循环引用从而导致内存泄漏。

善用函数

使用一个匿名函数在代码的最外层进行包裹。

;(function() { // 主业务代码 })();

有的甚至更高级一点:

;(function(win, doc, $, undefined) {  // 主业务代码})(window, document, jQuery);

甚至连如RequireJS, SeaJS, OzJS 等前端模块化加载解决方案,都是采用类似的形式:

define(['jquery'], function($) {  // 主业务代码});define('module', ['dep', 'underscore'], function($, _) {  // 主业务代码});

善用回调函数
在制作网页过程中,用的比较多的地方,我们通常封装成函数。在封装函数的时候,善用运用回调函数。

例子如下:

function getData(callBack){    $.ajax({        url:"",        data:{},        dataType:"JSON",        type:"get",        success:function(data){            callBack(null,data)        }    })}

我们在调用的时候可以如下:

getData(function(error,data){ console.log(data)})

数组中插入元素最快的方法
向一个数组中插入元素是平时很常见的一件事情。你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素。 但是这些已知的方法,并不意味着没有更加高效的方法。

尾部插入元素

我们有2个数组

var arr = [1,2,3,4,5];var arr2 = [];

测试如下:

 arr[arr.length] = 6; // 最快arr.push(6); // 慢34.66%arr2 = arr.concat([6]); // 慢85.79%

前面插入元素

var arr = [1,2,3,4,5];arr.unshift(0); [0].concat(arr);

发现:

[0].concat(arr); // 快arr.unshift(0); // 慢64.70%

向数组中间添加元素

使用splice可以简单的向数组中间添加元素,这也是最高效的方法。

var items = ['one', 'two', 'three', 'four'];items.splice(items.length / 2, 0, 'hello');

看完上述内容,你们掌握如何提高WEB前端的性能优化的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何提高web前端的性能优化

本文链接: https://www.lsjlt.com/news/253259.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何提高web前端的性能优化
    如何提高web前端的性能优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前端性能优化是一个不断追求的过程,前面的文章虽然讲解了一些性能优化,但是关于性能优化的路还有很长,很多...
    99+
    2023-06-08
  • 如何进行Web前端性能优化
    这篇文章给大家介绍如何进行Web前端性能优化 ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Yahoo! 的 Exceptional Performance team 在 Web 前端方面作出了卓越的贡献。广为人知的优...
    99+
    2023-06-08
  • web前端性能优化总结
    本篇内容介绍了“web前端性能优化总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.原则多使用内存,缓...
    99+
    2022-10-19
  • 如何提高javascript和css网站前端的性能优化
    本篇文章为大家展示了如何提高javascript和css网站前端的性能优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。CSS性能优化1、把样式表置于顶部现把样式表放到文档的< head /&...
    99+
    2023-06-08
  • Web前端性能的优化方法有哪些
    这篇文章主要讲解了“Web前端性能的优化方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Web前端性能的优化方法有哪些”吧!  Web前端性能优化的结果直接影响到用户体验,而用户体验...
    99+
    2023-06-04
  • WEB前端性能优化的方法有哪些
    这篇文章将为大家详细讲解有关WEB前端性能优化的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。减少请求数量合并如果不进行文件合并,有如下3个隐患1、文件与文件之...
    99+
    2022-10-19
  • Web前端性能优化方法有哪些
    本篇内容介绍了“Web前端性能优化方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、精简java...
    99+
    2022-10-19
  • web前端如何提高自己的技能水平
    随着互联网的普及,web前端开发已经成为了炙手可热的职业。作为web前端开发的从业者,不断提高自己的技能水平是必不可少的,只有持续学习、不断进步,才能在这个领域保持竞争力。本文将分享一些提高web前端技能水平的方法和技巧。一、不断学习新技术...
    99+
    2023-05-14
  • Web前端性能优化的实用技巧有哪些
    这篇文章主要介绍“Web前端性能优化的实用技巧有哪些”,在日常操作中,相信很多人在Web前端性能优化的实用技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2022-10-19
  • 如何理解前端性能优化CRP
    这篇文章主要介绍“如何理解前端性能优化CRP”,在日常操作中,相信很多人在如何理解前端性能优化CRP问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解前端性能优化CRP”...
    99+
    2022-10-19
  • PHP-FPM性能优化:提高网站前端渲染速度的策略
    随着互联网的迅猛发展,网页前端渲染速度成为了一个关键的指标。而在PHP语言中,PHP-FPM是一种广泛使用的FastCGI进程管理器,它可以提供更高效的PHP请求处理能力,从而提升网站的前端渲染速度。本文将介绍一些PHP-FPM性能优化的策...
    99+
    2023-10-21
    性能优化 关键词:PHP-FPM 前端渲染速度
  • web前端中如何优化图片
    这篇文章给大家介绍web前端中如何优化图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对于在网站优化时,图片也是要得优化的。随着互联网搜索技术的发展,以往不能被搜索引擎“读懂”的图片...
    99+
    2022-10-19
  • 如何利用Webpack来优化前端性能
    本篇内容主要讲解“如何利用Webpack来优化前端性能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用Webpack来优化前端性能”吧!一、背景随着前端的...
    99+
    2022-10-19
  • 如何能提高CSS编写技巧 提高Web前端开发效率
    如何能提高CSS编写技巧?怎么学好Web前端开发?很多人在学习Web前端时,刚开始都会学习HTML和CSS,HTML用于文本内容,CSS用于样式设计,掌握这两部分知识就可以进行简单的页面制作。不过如果耗时过长作品一般未免有些得不偿失,因此你...
    99+
    2023-06-03
  • 前端性能优化的示例分析
    这篇文章给大家分享的是有关前端性能优化的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。反复看下以下三个问题。有木有不同的人问过你:什么是前端性能优化?有木有不同的面试官问...
    99+
    2022-10-19
  • 前端发开中如何进行性能优化
    小编给大家分享一下前端发开中如何进行性能优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!content方面1,减少HTTP请求...
    99+
    2022-10-19
  • 如何提高Web性能
    这篇文章给大家分享的是有关如何提高Web性能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一. 清理 HTML 文档HTML,即超文本标记语言,几乎是所有网站的支柱。HTML 为...
    99+
    2022-10-19
  • css如何优化并提高性能
    小编给大家分享一下css如何优化并提高性能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!方法:1、压缩css,减少文件体积;2、使用link引入css文件;3、合理设计CSS布局,注意复用样式,减少渲染上花的时间;4、少用...
    99+
    2023-06-14
  • JavaScriptwebpack模块打包器如何优化前端性能
    目录一、webpack的使用背景二、webpack如何优化1. JS代码压缩2.CSS代码压缩3. HTML文件压缩4. 文件大小压缩5. 图片压缩6. Tree Shaking7....
    99+
    2022-11-13
    JavaScript webpack JavaScript webpack优化性能
  • Oracle 的sql优化提高性能
    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作