《高性能javascript》随笔
1、css文件在head标签中引入,保证在渲染结构的时候进行样式渲染
2、Js文件放在body的底部,确保在渲染dom树的时候不会出现js阻塞
3、函数内的变量是访问速度最快的,全局变量的访问速度是最慢的,减少全局变量的访问
4、函数中使用多次全局变量的时候可以把全局变量赋值给一个新的局部变量
5、闭包会影响内存和性能,减少不必要的闭包函数的使用
6、尽量避免使用对象成员,使用的话同一个函数中避免多次引用对象成员
7、ECMAscript和DOM是两个独立的部分,每次访问都会造成性能的损耗,所以要减少访问DOM的次数
8、选择合适的选择器能提高性能
9、减少会导致重绘和重排版的操作,将多个DOM操作改变合并到一个批次中一次性执行
10、当需要对DOM元素进行多次修改时,一、摘除元素,二、进行修改,三、将元素放回文档,这样只会引发两次重排版
11、减少对布局信息的查询次数,如果需要使用变量
12、重排版的部分越小执行速度越快,大部分的重排版执行时可能出现卡顿
13、使用事件托管的方式
14、for-in循环比其他三种循环开销要大,非必要是不适用for-in
15、Js在运行时会停止线程中的任务,所以js运行任务要尽快结束以免对用户体验造成影响
16、调查发现单个js操作运行的时间最大是100ms,否则算是运行慢的了
17、使用定时器将长时间的js执行脚本成为较短的片段
18、将一个运行时间较长的任务分解成多个小任务
19、多个定时器被同时间创建会影响性能,同一时间只存在一个定时器才不会带来性能问题
20、根据项目需求选择正确的数据格式和与之对应的传输技术
21、尽量使用json轻量的数据形式,XML冗长且解析缓慢
22、创建新对象和新数组的时候使用直接量比非直接量形式创建和初始化更快
23、原生方法总是比JavaScript写的东西要快,尽量使用原生方法
24、合并js文件,减少HTTP请求的数量
25、使用YUI压缩器紧凑处理js文件
26、使用CDN提供js文件,提供性能,管理压缩和缓存
27、使用性能分析器找出脚本运行时慢的部分,并对其进行优化
《高性能javascript》随笔的更多相关文章
- "笨方法学python"
<笨方法学python>.感觉里面的方法还可以.新手可以看看... 本书可以:教会你编程新手三种最重要的技能:读和写.注重细节.发现不同.
- 笨方法学python 22,前期知识点总结
对笨方法学python,前22讲自己的模糊的单词.函数进行梳理总结如下: 单词.函数 含义 print() 打印内容到屏幕 IDLE 是一个纯Python下自带的简洁的集成开发环境 variable ...
- 《笨方法学python》随笔
字符串 字符串可以包含格式化字符%s,只要将格式化的变量放到字符串中,再紧跟着一个百分号 %(percent), 再紧跟着变量名即可.唯一要注意的地方是, 如果你想要在字符串中通过格式化字符放入多个变 ...
- LPTHW 笨方法学python 19章
本章节,我只是把所有的输出加上了自己的注释. #!/usr/bin/env python # -*- coding:utf-8 -*- def cheese_and_crakers(cheese_co ...
- 笨方法学python 33课
今天Eiffel看到了第33章,任务是把一个while循环改成一个函数. 我在把while循环改成函数上很顺利,但是不知道怎么写python的主函数,在参数的调用上也出现了问题. 通过查资料,发现py ...
- 《笨方法学Python》加分题32
注意一下 range 的用法.查一下 range 函数并理解它在第 22 行(我的答案),你可以直接将 elements 赋值为 range(0, 6) ,而无需使用 for 循环?在 python ...
- 《笨方法学Python》加分题33
while-leep 和我们接触过的 for-loop 类似,它们都会判断一个布尔表达式的真伪.也和 for 循环一样我们需要注意缩进,后续的练习会偏重这方面的练习.不同点在于 while 循环在执行 ...
- 《笨方法学Python》加分题28
#!usr/bin/python # -*-coding:utf-8-*- True and True print ("True") False and True print (& ...
- 《笨方法学Python》加分题20
加分练习通读脚本,在每一行之前加注解,以理解脚本里发生的事情.每次 print_a_line 运行时,你都传递了一个叫 current_line 的变量,在每次调用时,打印出 current_line ...
- 《笨方法学Python》加分题17
题目通过前学习的文件操作把一个文件中的内容拷贝到另一个文件中,并使用 os.path.exists 在拷贝前判断被拷贝的文件是否已经存在,之后由用户判断是否继续完成拷贝. 新知识os.path.exi ...
随机推荐
- React和Redux的开发经验之谈
1.显示控制用state,共享数据用redux,觉得可以不用redux的就不要用 2.表单项集中的地方,推荐用高阶组件,单个表单项,不推荐用高阶组件 3.涉及对服务数据的处理,在redux的model ...
- Windbg Register(寄存器)窗口的使用
寄存器是位于在 CPU 的小易失性内存单位. 许多寄存器专用于特定用途,并可用于用户模式应用程序使用的其他寄存器. 基于 x86 和基于 x64 的处理器在有可用的寄存器的不同集合. 如何打开寄存器窗 ...
- System.getProperty("line.separator") 是什么意思?
在java中存在一些转义字符,比如"\n"为换行符,但是也有一些JDK自带的一些操作符 比如 : System.getProperty("line.separator&q ...
- MinGW g++.exe 编译 DLL 时,导出函数名带@的问题
今天尝试用CodeBlocks写了一个简单的Dll,发现生成的 dll 文件导出的函数名后面都有一个 @xxx 从生成的 libDll2.def 中看到: EXPORTS DllMain@ @ Max ...
- CUDA学习笔记1
最近要做三维重建就学习一下cuda的一些使用. CUDA并行变成的基本四路是把一个很大的任务划分成N个简单重复的操作,创建N个线程分别执行. CPU和GPU,有各自的存储空间: Host, CPU a ...
- JOI徽章
[题目描述] 日本信息学奥赛委员会为了应援将要去台湾参加 IOI 的选手们,打算制作一面新的 JOI 旗帜 .JOI 旗帜为由 M 行 N 列的 M*N 个正方形组 成的图形,每个正方形里写有 J,O ...
- Mysql变量、存储过程、函数、流程控制
一.系统变量 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加global关键字,会话变量需要添加sessi ...
- 027 ElasticSearch----全文检索技术02---快速入门
1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,E ...
- SpringBoot扩展点之一:SpringApplicationRunListener
三种监听器的关系 ApplicationListener.SpringApplicationRunListeners.SpringApplicationRunListener的关系: SpringAp ...
- Spring Security 解析(四) ——短信登录开发
Spring Security 解析(四) -- 短信登录开发 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security ...