js小程序写法优化
(function(){
var gcld_but = document.getElementById("gcld_but"),
gcld_but_li = gcld_but.getElementsByTagName("li"),
gcld_box = document.getElementById("gcld_box"),
close_btn = document.getElementById("close_btn"),
gcld_btn = document.getElementById("gcld_btn"),
box = document.getElementById("box"),
mask = document.getElementById("mask"),
len = gcld_but_li.length,
gcld_but_a,
i,
s_height = document.documentElement.scrollHeight||document.body.scrollHeight;
o_height = null,
o_width = null,
on = 0; ------------------------>>>>>>>>>>>>>>>>>>>>>变量尽量写在开头,防止滚动时候每次执行函数就取DOM元素,浪费性能。
mask.style.height = s_height+"px"; /*水平垂直居中函数*/
function centered_box(){
var s_top = document.body.scrollTop||document.documentElement.scrollTop,
c_height = document.documentElement.clientHeight||document.body.clientHeight,
c_width = document.documentElement.clientWidth||document.body.clientWidth,
left,
top; if( !o_height ){------------------------------>>>>>>>>>>>>>>>>>>>取一次DOM元素后放在变量里(页面不关闭就一直存在),下次执行函数就不用取了。
o_height = box.offsetHeight;
o_width = box.offsetWidth;------------------->>>>>>>>>>>>>>>>有些浏览器在元素display:none时取不到宽高,点击按钮显示该元素后再执行函数,所以写在函数里面一定能取到。
} left = (c_width - o_width)/2 + "px";
top = (c_height/2 - o_height/2 +s_top) + "px"; box.style.left = left;
box.style.top = top;
} /*点击打开弹窗*/
for(i=0; i<len; i++){
gcld_but_a = gcld_but_li[i].getElementsByTagName("a")[0];
gcld_but_a.onclick = function(){
gcld_box.style.display = "block";
on = 1;-------------------->>>>>>>>>>>>>>>>>>>>>>>加个开关,确保只让点击的时候执行弹窗函数。
centered_box();
}
} /*关闭弹窗*/
close_btn.onclick = gcld_btn.onclick = function(){
gcld_box.style.display = "none";
on = 0;
}; window.onscroll = window.onresize = function(){
if(on){
centered_box();
}
}; })();
总结:1:定义的变量尽量写在程序的上方----规范
2:(从执行流的角度)功能实现后----(从性能的角度)对程序进行优化。
3:性能优化
1、防止重复获取DOM元素
2、防止重复执行代码函数
3、写法考虑兼容性
js小程序写法优化的更多相关文章
- 微信小程序性能优化技巧
摘要: 如果小程序不够快,还要它干嘛? 原文:微信小程序性能优化方案--让你的小程序如此丝滑 作者:杜俊成要好好学习 Fundebug经授权转载,版权归原作者所有. 微信小程序如果想要优化性能,有关键 ...
- 【微信小程序推广营销】教你微信小程序SEO优化,让你的小程序快人一步抢占先机
今年一月份上线的小程序,经过近一年的沉淀发酵,现在也进入了快速发展期. 在未来肯定会有越来越多的小程序诞生,小程序多了就需要搜索,那么如何让自己的小程序在众多的小程序中脱颖而出,这就需要小程序SEO优 ...
- 微信小程序开发优化
一.开发优化一 1.使用Vant Weapp 1.1 什么是Vant Weapp Vant Weapp官网链接 Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应 ...
- 微信小程序性能优化之一
性能优化 界面和业务逻辑之间事件交互小程序调用nativeNative回调小程序 图片源文件优化 渲染优化 ---------------------------------------------- ...
- Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案
Wed Jun 27 2018 09:25:43 GMT+0800 (中国标准时间) Page 注册错误,Please do not register multiple Pages in undefi ...
- 微信小程序:优化页面要渲染的属性
问题:页面中只用到四个属性:goods_name,goods_price,goods_introduce,pics,但是整个对象中有22个属性,小程序中建议:data中只存放标签中要使用的数据,而现在 ...
- js 学习之路10:try异常处理和第一个js小程序
try 语句测试代码块的错误. catch 语句处理错误. throw 语句创建自定义错误. 1. try/catch语句 catch语句用来捕获try代码块中的错误,并执行自定义的语句来处理它. 语 ...
- 小程序的优化代码的分析Promise方法
代码优化,这里通过了wx.request请求轮播图的API,通过result结果里面的data数据我们可以看到massage里面装着我们的数据 通过图片可以用看到swiperList返回的三个元素的数 ...
- 微信小程序:优化接口代码-提取公共接口路径
方法一.将公共部分提取出来定义为baseURL变量 简化url,把里面公共部分提取出来.如https://api-hmugo-web.itheima.net/api/public/v1/categor ...
随机推荐
- C++之路进阶——bzoj1821(部落划分)
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser hyxzc Logout 捐赠本站 Notice:1:由于本OJ建 ...
- JAVA 学习随笔 : JDK Enhancement Process JEP process
是时候寻找一个学习JAVA的路径了 ---- JDK Enhancement Process Oracle发布了JDK增强提案与路线图进程,目的在于鼓励OpenJDK提交者贡献点子和扩展以改进Open ...
- iOS 简单的分段下载文件
首先自己写个请求数据的类 首先.h文件 #import <Foundation/Foundation.h> @interface Downloaders : NSObject<NSU ...
- Oracle提示大全
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...
- linux命令:crontab命令(转)
一.crond简介 二.crond服务 三.crontab命令详解 四.使用注意事项 linux系统是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作 ...
- Azure Virtual Machine 之 如何利用Management Class Libraries 创建VM
之前发的blog简单的介绍了如何使用Management Class Libraries 来控制Azure platform. 但由于官方并没有提供文档,所以我们只能够通过自己研究来摸索使用该类库的方 ...
- python 查找指定内容的txt文件
程序设计思路:1. 利用os.walk()找出所有的文件;2.利用正则找到指定后缀的文件:3.找到需要的txt文件后,通过open().readlines()读取文件中每行数据;4.读取后,保存正则匹 ...
- django 其他地址访问不了问题
启动的时候 使用 python manage.py runserver 0.0.0.0:8000 即可接收所有IP访问
- 简单介绍MR21和MR22
MR21和MR22都可以用来调整价格,MR21是更改的单个物料的价格,MR22更改的是库存总价值,所以MR21可以更改移动平均价(V)或标准价(S)的物料价格.MR22只能更改移动平均价(V)的物料价 ...
- QT常规控件操作备忘
QLabel设置边框和颜色: label->setFrameShape (QFrame::Box); label->setStyleSheet("border: 1px soli ...