WEB前端开发最佳实践(4)
2016-05-08 12:59
681 查看
加快JS文件加载速度
最有效的减少初始加载的文件体积和加载次数延迟加载:避免代码加载和执行过程阻止页面的解析
尽量把js放在body的底部
使用成熟的加载框架HeadJS,RequireJS,LABjs
最佳实践提高性能:
少用for-in循环
谨慎使用eval
正确使用数组
尽量不使用全局变量
确保解除已经不需要的事件监听,如要那些要移除的DOM对象上绑定的事件
不要在闭包中返回外部不需要的对象
减少变量访问时在作用域链上查找的层级,最好定义为局部变量
高效的DOM操作
在浏览器中DOM和ES的实现是分离的在IE中ES在jscript.dll中,而DOM在mshtml.dll中
在chrome中,使用webkit中的webcore处理DOM和渲染,在V8中处理ES
减少DOM操作的最佳实践:
合并多次的DOM操作为单次的DOM操作
把DOM元素离线或隐藏后修改
使用文档片段
var fragment = document.createDocumentFragment();
document.getElementById(‘myElement’).appendChild(fragment);
通过设置DOM元素的display样式来设置none来隐藏元素
var myElement = document.getElementById(‘Myelement’);
myElement.style.display = ‘none’;
…..DOM操作
myElement.style.display = ‘display’;
克隆DOM元素到内存中
var myElement = document.getElementById(‘Myelement’);
var clone = myElement.cloneNode(true);
…..DOM操作
myElement.parentNode.replaceChild(clone,myElement);
谨慎取得DOM元素的布局信息
把布局信息提取出来,在连续对DOM进行操作,这样会优化连续的DOM操作,这样只会重排一次
使用事件托管方式绑定事件
绑定事件会占用事件
浏览器保存事件绑定会占用内存
采用冒泡机制,只在父元素上绑定事件,用于处理所有的子元素
document.getElementById(‘list’).addEventListener(“click”,function(e){
if(e.target && e.target.nodeName.toUpperCase == “LI”){
//针对子元素进行处理
…..}})
高性能网页,达到理想要求60帧/秒,30帧/秒
Timeline:黄色占有很大的部分,则性能瓶颈在JS上,如果内存有异常,则要仔细检查内存溢出
使用测试工具:在线jsPerf,JSLitmus
高性能的JS
xss:跨站点脚本攻击CSRF:跨站请求伪造,诱导用户发出请求
界面操作劫持:点击劫持和拖放劫持
DDos攻击:借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力
使用html5中的CORS,或者使用白名单或者CookieToken来进行限制
安全使用cookie,js不安全,保存数据最好使用localStorage
如果cookie含有敏感信息,使用Cookie的Secure设置
Cookie中的Domain(域)和path(路径),设置这两个属性把范围缩小,避免不相关的路径或者域中访问到cookie
防止网页被其他网站内嵌为iframe
从浏览器兼容性上来说,脚本的方式是目前用来阻止网页被内嵌的最佳方式
X-Frame-Options:DENY,SAMEORIGIN,ALLOWFROM uri分别表示禁止,允许相同及特定域页面
仅仅禁止被内嵌,设置X-Frame-Options是最简单有效的方案
相关文章推荐
- web前端开发工程师需要学习的技能
- 6.html中的表单元素一
- 7.html中的表单元素一
- 开启CSS3.0的学习之旅(一)
- web前端开发
- 初始web前端开发
- web前端怎么做?
- 从网页制作到前端开发工程师难吗?
- Web前端工程师成长之路——知识汇总
- html基础知识梳理
- 史上最全的HTML、CSS知识点总结,浅显易懂
- WEB标准,Web前端开发工程师必备技术列表
- WEB标准,Web前端开发工程师必备技术列表
- img 和 background-image的选择
- Emmet:html/css代码快速编写神器
- 微信里面防止下拉"露底"组件,touch事件
- 微信公众平台Js API WeixinApi
- 阿里巴巴2015暑期实习面试经历(前端开发)
- 关于编写性能高效的javascript事件的技术[转] 来源:酷勤网 发布于 2015-2-12
- 浏览器是怎么加载页面的