High Performance JavaScript(高性能JavaScript)读书笔记分析


Posted in Javascript onMay 05, 2011

第一章:加载和执行

浏览器的JavaScript的引擎是编译器层的优化;
当浏览器执行JavaScript代码时,不能同时做其他任何事情(单一进程),意味着<script>标签每次出现都霸道地让页面等带脚本的解析和执行(每个文件必须等到前一个文件下载并执行完成才会开始下载),所以头部的JS和CSS用来渲染页面,交互行为(几乎所有)的JS放在<body>底部;
主流浏览器都允许并行下载JS。
减少外链脚本数量将会改善性能(合并JS)
任何网站都可以使用一个把制定文件合并处理后的URL来获取任意数量的文件。
defer属性可延迟脚本(只有IE4 和FF3.5 支持)
第二章:数据访问

JavaScript中有四种基本的数据存取位置: 直接量,变量,数组元素(以数字作为索引),对象成员(以字符床作为索引)。
访问直接量和局部变量的速度最快,相反,访问数组元素和对象成员相对较慢。
属性或方法在原型链中的位置越深,访问它的速度也越慢。
通常来说,可以通过吧常用的对象,数组元素,跨越变量保存在局部变量中来改善JavaScript性能。
第三章:DOM编程

DOM操作在webkit内核的浏览器速度快,其他的浏览器innerHTML执行快。
访问和操作DOM是现代WEB应用的重要部分。但每次穿越链接ECMAScript和DOM两个岛屿之间的桥梁都会被收取‘过桥费'.
要留意重回和重排。
在IE中:hover会降低响应速度。
第四章:算法和流程控制

避免使用for-in循环,除非需要遍历一个属性数量位置的对象。
了解栈溢出错误。
第五章:字符串和正则表达式

回溯既是正则表达式匹配功能的基本组成部分,也是正则表达式的低效之源。
第六章:快速响应的用户界面

任何JavaScript任务都不应当执行超过100毫秒。
Web workers是新版浏览器支持的特性。
没有什么JavaScript代码会重要到可以影响用户体验的程度.
第七章:Ajax

JSON是轻量级的数据格式,解析速度快。
减少请求数,可通过合并JS和CSS,还有IMG。
缩短页面加载时间,页面主要内容加载完成后,用Ajax获取那些次要的文件。
第八章:编程实践

大多数的时候,没必要使用eval()和Function(),因此最好避免使用它们。至于setTimeout()和setInterval(),建议传入函数而不是字符串来作为第一个参数。
在JavaScript中创建对象和数组的方法有多种,但使用对象和数组直接量是最快的方式(对象属性和数组项越多,使用直接量的好处就越明显)。
不要重复工作:延迟加载;条件预加载.
多使用原生方法,因为更快。
第九章:构建并部署高性能JavaScript应用

PV(page view)即页面浏览量或点击量。
减少页面渲染所需的HTTP请求数,特别是针对那些首次访问网站的用户。
JavaScript压缩。
JavaScript缓存。
使用内容分发网络(CDN)
第十章主要介绍工具:如firebug,YSlow,和一些性能分析.

Javascript 相关文章推荐
通过隐藏option实现select的联动效果
Nov 10 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
js switch case default 的用法示例介绍
Oct 23 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
JS延时器提示框的应用实例代码解析
Apr 27 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
详解Node.js access_token的获取、存储及更新
Jun 20 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
Jun 14 Javascript
详解vue-router数据加载与缓存使用总结
Oct 29 Javascript
JS document form表单元素操作完整示例
Jan 13 Javascript
jQuery bind事件使用详解
May 05 #Javascript
javascript 拖动表格行实现代码
May 05 #Javascript
小试JQuery的AutoComplete插件
May 04 #Javascript
为你的网站增加亮点的9款jQuery插件推荐
May 03 #Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
May 03 #Javascript
Jquery 绑定时间实现代码
May 03 #Javascript
jqgrid 简单学习笔记
May 03 #Javascript
You might like
东方红 - 来复式再生机的修复
2021/03/02 无线电
深入解析PHP的引用计数机制
2013/06/14 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
js实现聊天对话框
2020/02/08 Javascript
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python操作串口的方法
2015/06/17 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
python装饰器初探(推荐)
2016/07/21 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python 闭包的使用方法
2017/09/07 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
渗透攻击的测试步骤
2014/06/07 面试题
员工工作表扬信范文
2014/01/13 职场文书
幼儿园老师寄语
2014/04/03 职场文书
管理工程专业求职信
2014/08/10 职场文书
销售人才自我评价范文
2014/09/27 职场文书
MySQL约束超详解
2021/09/04 MySQL
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电