




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、javascript编码规一些导致js性能缓慢的例DOM执行DOM交互的代码比i一般的js代码要慢。DOM交互是不可避免的,但是尽量的减少。例如,动态的使用innerHTMLHTML语句比创建DOM节点eval无论什么时候,避免使用eval方法,因为执行这一方造成很大的开销withfor-in循环js陷evalFunctionconstructorevalfunctionconstructor开销因为每一次引擎调用他们是必须将源码转换成可执行代码;另外,使用evaltry-catch-避免在对性能影响较大的地方使用for-inforin循环需要引擎构建一个枚举属性列setTimeout()setInterval()避免对象里没必要的DOM尽量让的变量短一点,不要太长,特别是循环里面的变将自身在作用域外的变量中当一个funciton被执行时,一个执行的上下快的。将自身用作用域之外的变量,读写都会变的更快,这在全局变量和一假如你需要在一个大循环中一个dom,这样子会更快加载性能一些可以提高的点jsjsExperesCache-ControlGzipjavascriptcssYUIJSMin让无阻赛并将行内放到样式表之上?有待考证,不科鲜为人知dom3DOMDOMDOM个有效的方法来解决这个问题是利用HTML模板来一些框或者UI组件。的布局重构发生在DOM的操作方式影响到布局。重构的代价绘大的多得多。重构表格构块状元素代价大绝对定位的元素不会对的布局产生影响DOM的修改会触发重绘参考资料:①RepaintandreflowatOperaDeveloper NotesonHTMLReflow–moredetailedinformationonthereflowprocess Reflows&Repaints:CSSPerformancemakingyourJavaScript GoWithThe Rendering:repaint,reflow/relayout,HTML设定元素不可见再进行改变(质疑,appendChild,jsclassNamecssclassnamevs.styledomDOMdom面象的client-server对xml动positionabsolutetimer事eventJavascriptsetTimeout不会溢出原因是setTimeout是伪异步的,把函数setTimeout可以而不用setTimeout的时候函数必须等待调用的函数返回后才能继续执行,命名规目提高代码可性和可性的方法是使用命名约定这就意味着采用一致的方法来对变量变量JS中没有类,但是可以用new调用构造函数:varman=new普通变量命如:nCheckCount表示整形的数值匈牙利命名提示:虽然JavaScript变量表面上没有类型,但是JavaScript还是会为变量赋予相应的JavaScriptArrayaBooleanbFunctionfIntegernObjectoRegularExpressionrrStrings其他前缀规$Jquery例如:$Content,$ModuleJquery例如:fnGetName,fnSetAgefn例外情循环变量可以简写,比如:i,j,k等。ajax请求url,和一些不会改变的数据。函数命普通函数:首字母小写,驼峰式命名,使用动词或者动词+名词形例如:fnGetVersion(),fnSubmitForm(),fnInit()is,has,functionfnGetNumber(nTotal){if(nTotal<100){nTotal=}returnfunction_fnAdd(nNumber){return}}alert(fGetNumber(10));//alert例如:fnAddressGet(),get获取/set设置add增加/remove删除create创建/destory移除start启动/stop停止open打开/close关闭,read/write写入load载入/save保存,create创建/destroy销毁begin开始/end结束,backup备份/restore恢复import导入/export导出,split分割/merge合并inject注入/extract提取,attach附着/detach脱离bind绑定/separate分离,view查看/browse浏览edit编辑/modify修改,select选取/mark标记copy/paste粘贴,undo撤销/redo重做insert/delete移除,add加入/append添加clean清理/clear清除,index索引/sort排序find查找/search搜索,increase增加/decrease减少play/pause暂停,launch启动/run运行compile编译/execute执行,debug调试/traceobserve观察/listen,build构建/publish发布input输入/output输出,encode编码/decodeencrypt加密/decrypt,compress压 press解压pack打包/unpack解包,parse解析/emit生成connect连接/disconnect断开,send发送/receive接收download/upload上传,refresh刷新/synchronize同步update更新/revert复原,lock锁定/unlockcheckout签出/checkin签入,submit提交/commit交付push推/pull拉,expand展开/collapsebegin起始/end结束,start开始/finish完成enter进入/exit退出,abort放弃/quit离开obsolete废弃/depreciate废旧,collect收集/aggregate变量命名例为什么需要这样强制定义变量前缀?正式因为javascript是弱语言造成的。在定义大量变量的时候需要很明确的知道当前变量是什么属性如果只通过普通单词是很难区分的varchecked=varcheck=function(){returntrue;}someif(check)checked还是check()//dosome}varbChecked=varfnCheck=function(){returntrue;}someif(bChecked)//dosome}if(fnCheck())//doother}var=getName:function()return ()+''+_get:function()_getLast:function}提醒使用对象的用户,们这些方法在其他地方不能确保一定能够正常工作,总结:下面是一些使用下划线约定的变编写注公共组件者和各栏目WD都需要在文件头部加上注释说明*////varname= varname=”abc”;//使用空javascript采用同样的逻辑,可在列表表达式(等价于逗号)和语句结束(等价于用处for循环的各个部分的分号之后:例如,for(vari0;i10;ifor循环中初始化多个变量(i和最大值等):for(vari0,max10;imax;i+=在限定数组项的逗号后面:vara1,2,对象属性的逗号之后和将属性名和属性值分开的冒号之后:varo{a:1,b:分隔开函数中各个参数的逗号之后:myFunc(ab,在函数的大括号之前:functionmyFunc()在函数表达式之后:varmyFunc=function()用处+,-,*,=,&&||,+=等之后使用空格:vard=0,a=bif(a&&b&&c){d=a%c;a+=}//vard=0;aif(a&&b&&c){d=a%c;a+=}API文生成API骤编写特殊格式的代码块(即一些注释块运行工具来解析代码和注释(工具如:JSDocToolkitHTML格式发布(API文档就是利用* {String}@return{String}varreverse=function(input)returnYUIDocjavascript应用程序@modulevarMYAPP={};//定义一个包含两个方法(sum()multi())math_stuff@namespaceclassSumstwo*@method***sum:function(a,b){returna+b;Multipliestwo***multi:function(a,b){returna*b;}@property和@type2.写API的API编写注释不仅仅是一中提供参考文档的简便方法,而且还有其他用途——通过再次、该方案是否是最佳方案呢?改代码是否可读、易于理解和升级呢?当您再次审视代码、写除了三目运算,if,else等简//if(true)}//不的书if//不的书写if(true)在需要以{}闭合的代码段前增加换行,如:for//if(wl&&wl.length)for(i=0,l=wl.length;i<l;++i){p=wl[i];type=Y.Lang.type(r[p]);if(s.hasOwnProperty(p)){if(merge&&type=='object'){Y.mix(r[p],s[p]);}elseif(ov||!(pinr))r[p]=}}}}//if(wl&&wl.length)for(i=0,l=wl.length;i<l;++i){p=wl[i];type=if(s.hasOwnProperty(p))//mergeif(merge&&type=='object'){Y.mix(r[p],s[p]);}elseif(ov||!(pinr))r[p]=}}}}使用Function进行类的定义,不继承,如需继承采用成类库实现继//function(name){=name;}.prototype.sayName=function(){varme=new//thisselffunctionPersion(name,sexvarself==name;self.sex=sex;}JS的擅长的语function}function}B.prototype=newB.prototype.constructorB继承从原则上来讲,别改变他的构造函数,否则这个继承就显得很别扭了使用局部变量缓存反复查找的对象(包括但不限于全局变量、dom查询结果、作用域链较深// ment=function()vardom$("#common- //appendTo //data //}//当需要缓存thisself//functionRow(name){varself=this;=$
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小说情节结构分析试题及答案
- 高职单招职业技能测试题库
- 高职单招语文文学常识篇三
- (高清版)DB12∕T 642-2016 天津市行政许可事项操作规程 举办大型群众性活动安全许可-举办大型群众性活动安全许可
- 个人发展与2024年CPMM的试题及答案
- 感恩演讲稿-感恩老师
- 2025年活动合同模版
- 专升本思政理论的试题及答案检验
- 2025年度智能家居环保住宅商品房预售资金监管与智慧社区服务合同
- 二零二五年度特色小吃餐饮承包经营协议
- 七下综合世界真奇妙-共享“地球村”
- 治安管理处罚法学习
- 统编版(2025)七年级下册道德与法治第一课《青春正当时》教案(3课时)
- 孤岛交直流混合微电网群分布式低碳控制策略
- 2025年信阳职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 隧洞运输车辆安全课件
- 用友软件销售合同(2025年)
- 节能环保新能源燃料项目商业计划书
- 江苏省91job智慧就业平台单位中心操作手册
- 职业生涯规划企业访谈
- 《周易》全文电子版
评论
0/150
提交评论