高性能javascript(一)加载与执行
来源:互联网 发布:服务器安装linux系统 编辑:程序博客网 时间:2024/05/26 02:19
脚本的加载会阻塞页面其他文件的下载,采用以下办法进行优化:
一. 组织脚本
a、将多个脚本文件整合(减少HTTP请求)b、将script标签放置在页面文件的底部(页面加载完成后加载)
二. 无阻塞脚本
即页面加载完成后再加载js代码
三. 延迟脚本
在script标签中使用defer属性(不推荐)
四. 动态脚本元素(文件的加载与执行不会阻塞页面其他进程)
<html> <head> <title></title> <script type="text/javascript"> function init() { var myScript= document.createElement("script"); myScript.type = "text/javascript"; myScript.onload = function(){ alert("Script 加载已完成!") } myScript.src="package.js"; document.body.appendChild(myScript); //如果马上使用会找不到,因为还没有加载进来 functionOne(); } function operation() { //可以运行,显示“成功加载” functionOne(); } </script> </head> <body> <input type="button" value="测试按钮" onclick="init()"/> <input type="button" value="测试运行效果" onclick="operation()"/> </body></html>
五. 推荐的无阻塞模式
1.先添加动态加载需要的代码 主要包含load_script()函数
function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild );}
2.使用构建的加载器加载
<script type="text/javascript" src="loader.js"></script><script type="text/javascript" > load_script("the-rest.js",function(){ Application.init(); })</script>
3.LazyLoad类库是load_script()函数的增强版
六、模块引用
sea.js与requier.js都是在执行到引用代码,再下载(按需加载)
0 0
- 高性能javascript(一)加载与执行
- 高性能Javascript【一】加载和执行
- 《高性能 JavaScript》笔记(一):脚本加载和执行
- 【高性能 JavaScript --笔记】JavaScript 加载与执行
- 并行加载与顺序执行–《高性能javascript》读书笔记(jquery加载顺序)
- JAVASCRIPT高性能执行和加载(阻塞特性)
- 高性能JavaScript---加载和执行
- 《高性能javascript》读书笔记--js脚本的加载与执行
- JavaScript性能优化(1)——加载与执行
- [高性能JavaScript] 第1章 加载和执行
- 高性能JavaScript(2)之加载和执行优化
- 高性能JavaScript异步加载
- 高性能javascript 笔记(一)
- 高性能Js—加载及执行
- 高性能WEB-如何加载JavaScript
- JavaScript的性能优化:加载和执行
- JavaScript的性能优化:加载和执行
- JavaScript的性能优化:加载和执行
- List集合使用泛型与不使用泛型有什么区别?
- Mybatis实战之TypeHandler高级进阶
- FAT32 文件系统详解
- 【书山有路】Python基础教程 第4章
- 500. Keyboard Row\205. Isomorphic Strings\453. Minimum Moves to Equal Array Elements
- 高性能javascript(一)加载与执行
- kafka学习bolg
- lua基础(sh向lua传递参数arg)
- Google Guice 3.0开发
- Android数据存储方式——文件存储(内部和外部空间)
- 在eclipse中打开文件所在的目录
- 【DOM】node类型
- git仓库地址更换域名地址,即更换git托管
- strcat函数疑点验证