美文网首页javascript基础学习JavaScript学习笔记
JavaScript 的性能优化:加载和执行

JavaScript 的性能优化:加载和执行

作者: 跨境工具箱 | 来源:发表于2017-01-09 16:55 被阅读51次

    着 Web2.0 技术的不断推广,越来越多的应用使用javascript技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题。而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其他任何事情。

    使用动态创建的元素来下载并执行代码;

    使用 XHR 对象下载 JavaScript 代码并注入页面中。

    通过以上策略,可以在很大程度上提高那些需要使用大量 JavaScript 的 Web 网站和应用的实际性能。

    原文来自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/

    补充几个平时自己在用的函数

    function loadJs(url, callback, charset) {

    var head = document.getElementsByTagName("head")[0];

    var script = document.createElement("script");    if ( !!charset) script.charset = "utf-8";

    script.src = url;

    script.onload = script.onreadystatechange = function() {

    var f = script.readyState;        if (f && f != "loaded" && f != "complete") return;

    script.onload = script.onreadystatechange = null;

    head.removeChild(script) if (callback) {

    callback() || callback

    };

    };

    head.appendChild(script);

    }

    // js同步加载

    function getScripts(i, linkArray, fn) {

    env || getEnv();

    var script = document.createElement('script');

    script.type = 'text/javascript';

    script.src = linkArray[i];

    var head = document.head || document.getElementsByTagName('head')[0];

    head.appendChild(script);    if (env.ie && 'onreadystatechange' in script && !('draggable' in script)){ //ie浏览器使用以下方式加载

    script.onreadystatechange = function () {          if (/loaded|complete/.test(script.readyState)) {

    script.onreadystatechange = null;            if(i === linkArray.length-1) {                if (fn) {

    fn();

    }

    } else {

    getScripts(++i, linkArray, fn);

    }

    }

    };

    }else{

    script.onload = function() {            if(i === linkArray.length-1) {                if (fn) {

    fn();

    }

    } else {

    getScripts(++i, linkArray, fn);

    }

    };

    }

    }

    // js存在依赖关系 依次加载

    getScripts(0, [    'http://caibaojian.com/demo/base.js',    'http://caibaojian.com/demo/reset.js'], function() {

    alert('callback');

    });

    原文链接:http://www.kubiji.cn/juhe-id5905.html

    相关文章

      网友评论

        本文标题:JavaScript 的性能优化:加载和执行

        本文链接:https://www.haomeiwen.com/subject/injhbttx.html