高性能JS笔记1——加载执行

一、脚本位置

1、Script标签尽可能放到Body底部,以减少脚本文件下载对整个页面UI渲染的影响。

2、Script标签永远不要紧跟Link标签后面。

二、组织脚本

1、合并多个文件在一个Script中加载:

<script type="text/javascript" src="/scripts/jquery.min.js&/scripts/jquery.validation.js"></script>

三、无阻塞的脚本

1、无阻塞的脚本——在 Window对象的 Load事件触发后再下载脚本。

2、延迟的脚本加载——Script标签添加 Defer属性  

<script type="text/javascript" src="/scripts/jquery.min.js" defer></script>

3、动态脚本加载

  通过 JS动态创建 Script元素,但必须确保在页面加载完之后再执行。下面提供一个封装函数:

function loadScript(url, callback)
{
    var script = document.createElement("script");
    script.type="text/javascript";
    if(script.readyState){ //IE
        script.onreadystatechange = function(){
            if(script.readyState=="loaded"|| script.readyState=="complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    }
    else{
        script.onload=function(){
            callback();
        }
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

// Execute loadScript
loadScript("file1.js", function(){
    loadScript("file2.js", function(){
        loadScript("file3.js", function(){
            alert("All files are loaded!");
        });
    });
});

4、XMLHttpRequest 脚本注入

  跨域使用时有问题,不是我的菜。

时间: 2024-12-28 01:55:53

高性能JS笔记1——加载执行的相关文章

对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析

最近在研究HTML页面中JavaScript的执行顺序问题.在JavaScript中,定义一个方法或者函数有很多方式,最常见的有2中,function语句式与函数直接量方式. 对于function语句式,解释器会优先解释.即加载了这个js文件后,会扫描一下所有的js代码,然后把该优先执行的东西先执行了,然后再从上到下按顺序执行.所以,定义的代码可以在执行的代码后边.就跟C#中的方法定义一样.解释器已经记住了这个方法,知道在内存中的哪里,用的时候直接去取就行了. C#语言是,对象中的属性与方法具有

高性能js之js文件的加载与解析

随着网站的发展,现在的网页已经离不开js,经常一个页面会引入大量的js.那么该如何合理的加载这些js? head标签中引入js文件可能是最常见的一种方式,但是这样会造成一个问题.因为j可以说是浏览器中的霸主,换句话说在js的引入和解析过程中页面是不会进行加载和渲染的.那么如果js加载的时间过长,就会造成页面一段时间的空白,这样的用户体验无疑是很差的.下图是引入head中js和css时的加载过程. 从上图可以看到加载和解析每个js文件时都会耗费一定的时间,而这段时间不能同时进行别的事情,显然这种情

实现异步加载js文件及加载完成后回调

模块化工具类实现方式 基于AMD.CMD模式的JS模块化管理工具越来越流行,这些工具通常只需在页面中加载对应的工具JS,其他JS文件都是异步加载的,比如RequireJS就可以象下面这样做. 首先在页面加载 <script data-main="scripts/main.js" src="scripts/require.js"></script> 然后工具会自动识别data-main属性值,并加载对应的JS文件,在main.js可以加载更多模

js的动态加载、缓存、更新以及复用(一)

使用范围: OA.MIS.ERP等信息管理类的项目,暂时不考虑网站. 遇到的问题: 完成一个项目,往往需要引用很多js文件,比如jQuery.js.easyUI等.还有自己写的一些列js文件,那么这些文件如何方便的加载,如果文件有变化如何才能让客户端及时更新缓存?如果能够提高点运行效率,那就更好了. 目标: 1.  可以方便的引用js文件. 2.  尽量使用各种缓存,避免频繁从服务器读取文件. 3.  如果js文件有更新或者增加.减少几个减少js文件,需要客户端能够自动.立刻更新. 4.  Js

JS/CSS/IMG加载顺序关系之DOMContentLoaded事件

DOMContentLoaded介绍 DOMContentLoaded事件的触发条件是: 将会在"所有的DOM全部加载完毕并且JS加载执行后触发". 但如果"js是通过动态加载进来的话,是不会影响到DOMContentLoaded的触发时间" 如下图所示,蓝色的线代表DOMContentLoaded开始触发,但前提是JS已经加载完毕并执行了. (仅仅是DOM 并不是onload事件整个页面全部加载完毕触发,DOMContentLoaded比onload要早触发 请区

使用async属性异步加载执行JavaScript

HTML5让我兴奋的一个最大的原因是,它里面实现的新功能和新特征都是我们长久以来一直期待的.比如,我以前一直在使用placeholders,但以前必须要用JavaScript实现.而HTML5里给JavaScript标记提供的async属性,使JavaScript能异步加载执行.之前我需要各种的JavaScript插件来实现这种功能,但现在这个新属性能让我们轻松的实现异步加载. async – HTML代码 真的非常简单,就像下面这样: <script async src="siteScr

jraiser模块加载执行简要总结

1 在html文件中,通过require方式来加载指定的入口文件:2 然后通过正则表达式来匹配入口文件中的所有require的依赖文件:注意,此时入口文件已加载完毕,不过,还没执行而已.3 之后逐一通过script来添加到dom中,进行加载所有依赖的js文件:4 等所有依赖的js文件都加载完毕,再执行入口文件:5 执行入口文件的关键方法是:Module.export方法中的var result = self._factory.call(window, _require, module.expor

js文件最后加载(在window.load事件发生后再加载js文件),用于解决因jQuery等js库导致网页加载慢的问题

需引入文件:lazyload-min.js <script src="JS/lazyload-min.js" type="text/javascript"></script> 插入代码: function loadscript() { LazyLoad.loadOnce([ 'JS/touch.js', 'http://libs.baidu.com/jquery/1.2.3/jquery.min.js' ], loadComplete); }

Javascript加载执行问题探索(转)

做前端开发少不了各种利器.比如我习惯用的还是Google浏览器和重型武器Fiddller. 一: 原始情况 首先大家看看如下的代码: [html] view plaincopyprint? <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsLoad.Default" %> <!DOCTY