移动端性能优化动态加载JS、CSS

JS CODE

 (function() {
    /**
     * update:
     * 1.0
     */
    var version = "insure 1.1.0";
    var Zepto = Zepto || null, jQuery = jQuery || null, $ = Zepto || jQuery;
    var showLoading = false,
        isUsePackMode = false; // 是否使用合并模式,true则加载分页面合并的JS,CSS

    if (window.location.hostname == ‘localhost‘) {
        isUsePackMode = false; //本地开发环境默认值为false
    }

    /**
     * 页面初始化, 动态加载
     */
    var location = window.location;
    // 协议
    var protocol = location.protocol;
    // 主机名
    var host = location.host;

    if (host.indexOf(‘pingan.com‘) != -1) {
        isUsePackMode = true;
    }
    // 加载一个脚本文件
    function _loadJsFile(url, callback) {
        var script = document.createElement("script");
        if(script.readyState) {
            script.onreadystatechange = function() {
                if(script.readyState == "loaded" || script.readyState == "complete") {
                    callback.call();
                }
            }
        } else {
            script.onload = callback;
        }
        script.type = "text/javascript";
        //script.async = true;
        script.src = url;
        //url.indexOf(‘?‘) != -1 ? url + ‘&v=‘ + version : url + ‘?v=‘ + version;
        document.getElementsByTagName("head")[0].appendChild(script);
    }

    // 加载脚本文件列表
    function _loadJsList(urls, statechange, _index) {
        var index = _index || 0;
        if(urls[index]) {
            _loadJsFile(urls[index], function() {
                _loadJsList(urls, statechange, index + 1);
            });
        }

        if(statechange) {
            statechange(index);
        }
    }

    // 根据域名解析文件url
    function _parse(urls, type) {
        var _urls = [], url = "";

        if( typeof urls == "string") {
            urls = [urls];
        }

        for(var i = 0, len = urls.length; i < len; i++) {
            url = urls[i];
            if(!url) {
                continue;
            } else if(/^(http|https)/.test(url)) {// 完整的URL
                _urls.push(url);
            } else if(/^\//.test(url)) {// 以根目录为路径
                _urls.push(protocol + "//" + host + url);
            } else {
                _urls.push(url+‘?_=‘+Math.random());
            }
        }

        return _urls;
    }

    // 加载一个css文件
    function loadCSS(urls, packCss) {
        var html = [];
        urls = _parse(urls, "css");
        if (isUsePackMode && packCss) {
            urls = _parse(packCss, "css");
        }
        for(var i = 0, len = urls.length; i < len; i++) {
            html.push("<link type=\"text/css\" rel=\"stylesheet\" href=\"" + urls[i] + "\" />");
        }
        document.write(html.join(""));
    }

    // 加载脚本文件
    function loadJs(urls, callback, dontevent, showLoad, packJs) {
        showLoading = showLoad;
        urls = _parse(urls, "js");
        if(typeof(_) != ‘function‘ && typeof(jQuery) != ‘function‘) {
            urls.unshift(window.getDiffFrameUrl());
        }
        if (isUsePackMode && packJs) {
            packJs.unshift(window.getDiffFrameUrl());
            urls = _parse(packJs, "js");
        }
        if(!dontevent) {
            var _callback = callback, len = urls.length;
            callback = function(index) {
                if(_callback) {
                    _callback(index);
                }
            }
        }
        _loadJsList(urls, callback);
    }

    window.loadCSS = loadCSS;
    window.loadJs = loadJs;
    window.getDiffFrameUrl = function(prefix) {
        var b = navigator.userAgent.toLowerCase();
        browser = {
            safari : /webkit/.test(b),
            opera : /opera/.test(b),
            msie : /msie/.test(b) && !/opera/.test(b),
            mozilla : /mozilla/.test(b) && !/compatible/.test(b),
            winphone : window.navigator.msPointerEnabled
        };
        var prefix = prefix || ‘‘;
        //var url = prefix+‘js/third-party/zepto.v1.1.3.min.js‘;
        var url = prefix+‘/ebusiness/car/mobile/quoter/js/third-party/zepto.v1.1.3.js‘;
        if(browser.msie || browser.winphone) {
            url = prefix+‘/ebusiness/car/mobile/quoter/js/third-party/jquery-1.9.1.min2.js‘;
        }
        return url;
    }

})();

调用方法

<script type="text/javascript">
$(function(){
    loadJs([‘/ebusiness/car/mobile/quoter/js/common/common.js‘,
    ‘/ebusiness/car/mobile/quoter/js/common/city.js‘,
    ‘/ebusiness/car/mobile/quoter/js/common/date.js‘,
    ‘/ebusiness/car/mobile/quoter/js/insure/insureValidate.js‘,
    ‘/ebusiness/car/mobile/quoter/js/insure/insureBaseInfo.js‘
    ],null,true,false);
});
</script>
时间: 2024-12-15 09:04:21

移动端性能优化动态加载JS、CSS的相关文章

动态加载js css 插件

简介 动态加载js,css在现在以及将来肯定是很重要的.目前来看前端代码编写的业务量已经远远超过后端编写的.随着对用户体验度逐渐增强,前端业务复杂,加载速度变得很慢很慢.为了解决这个问题,目前出现的两个前端模块加载器为require.js与sea.js,这两款模块加载器都不错.但是呢,有时候我仅仅需要的只是动态加载一个js,不需要把代码模块化,那我们只能自己手写一个加载函数. 简单的加载js /** * HTML动态加载js * @path {String} src地址必须带有后缀名.js *

jquery动态加载js/css文件方法

先来看jquery自带的getSrcript文件 方法 代码如下 复制代码 $.getScript(url,callback) 实例 代码如下 复制代码 var testVar = 'New JS loaded!'; alert(testVar); function newFun(dynParam) { alert('You just passed '+dynParam+ ' as parameter.'); } 动态调用方法 HTML代码 代码如下 复制代码 <script type="

动态加载js,css(项目中需要的)

最近做的一个项目需要加入百度统计,大家都知道百度统计在页面引用就是一坨js,实现方法很简单引用到页面就ok了. 那么问题来了,虽然我不知道百度统计的原理是啥,我的测试服引用了百度统计,百度统计账号里面配置的域名是正式服的域名,但是却检测到了我测试服的访问量,这就尴尬了,然后就想到了动态加载js 1.动态加载js文件 我们要把这块链接加入页面 <script src="js/count.js"></script> 具体代码实现如下 function loadJs(

JS动态加载 js css

1.动态加载js function loadScript( url ){ var script = document.createElement( "script" ); script.type = "type/javascipt"; script.src = url; document.getElementsByTagName( "head" )[0].appendChild( script ); }; 2.动态加载CSS文件 function

【转】js JavaScript 的性能优化:加载和执行

JavaScript 的性能优化:加载和执行 转自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/ 随着 Web2.0 技术的不断推广,越来越多的应用使用 JavaScript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其他任何事情.本文详

为了提高性能,如何动态加载JS文件

超级表格是一款多人协作的在线表格,程序相当复杂,用到十几个JS文件.但是有些文件是在打开某些类型的表格时才需要加载. 例如,只有当打开甘特图表格时,才需要加载gantetu.js文件. 那么问题来了,为了减少js文件数量和请求,如何在需要时自动加载js文件呢? 办法如下. //动态加载js文件function mcss_importJS(js){ var oHead = document.getElementsByTagName('HEAD').item(0); var oScript= doc

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

原文链接:http://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/index.html?ca=drs- JavaScript 的性能优化:加载和执行 蔡 愉晟, 软件工程师, IBM 简介: 随着 Web2.0 技术的不断推广,越来越多的应用使用 JavaScript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就

jquery getScript动态加载JS方法改进详解[转载]

转载自http://www.jb51.net/article/31973.htm 有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当网站需要加载大量js时,动态的加载js就是一个比较好的方法,当需要某个功能时再将相应的js加载进来. 但是自己在使用过程中却发现了一些不尽如意的地方. 每次需要执行该功能的时候都会去请求一次这个js,这样不是在帮倒忙嘛

动态加载JS

res/js/modules/s01.js alert("动态加载JS成功!");  形式1: <script src="layui-v1.0.9_rls/layui.js"></script> <script> layui.use("res/js/modules/s01"); </script> 形式2: <script src="layui-v1.0.9_rls/layui.js