微信小程序的前端开发 |
h5微信支付前端开发教程 |
微信开发 前端 后端 |
首先我们要明确的问题就是,一个网站除了样式好看,功能简单明了等限制用户浏览量的因素之外,还有什么原因是限制你的网站流量的原因。
####渲染性能
在网站资源加载时,大多数用户关心的并不是网站如何加载,而是网站的加载速度,如果一个网站10秒,20秒,甚至30秒都无法加载成功,我相信没有那个用户会继续停留在这个网页上,所以我们必须要思考的问题就是,怎样的网站是顺畅的。下面的是google提出的数据模型:
Respond:0 – 100ms,视窗一般需要在这个时间段响应用户,超过这个时间段,用户就会感觉到延时。
####优化JavaScript的执行
函数的输入事件处理
首先,我们要知道的一个事实就是浏览器是由多个处理进程的:Compositor、Tile Worker、Main。当用户进行输入操作(滚动、点击等),如滚动时,Compositor 进程会接收到这个事件(实际它可以接受任何用户输入事件),如果可以的话,它将不会通知主进程,直接说:滚吧,牛宝宝。于是,页面就滚动了。当然,这其中包含更新层定位以及让 GPU 绘制帧,而主线程处于空闲状态。但是,事情往往并非如此。如果输入事件上绑定了 js 处理事件的话,Compositor 进程就没办法主动跳过主进程了。
当 js 处理事件过长时,输入事件的响应会一直处于阻塞状态,直到 js 处理完成。当响应超过 100ms 时,用户就会感受到延时。所以当处理用户事件时,我们应该做到:
####样式优化
添加或移除一个 DOM 元素、修改元素属性和样式类、应用动画效果等操作,都会引起 DOM 结构的改变,从而导致浏览器需要重新计算每个元素的样式、对页面或其一部分重新布局(多数情况下)。
计算样式的第一步是创建一套匹配的样式选择器,浏览器就是靠它们来对一个元素应用样式的。第二步是根据匹配的样式选择器来获取对应的具体样式规则,计算出最终具体有哪些样式是要应用在 DOM 元素上的。所以,你只需要记住要减小选择器的复杂性,减少无效元素,从而减小样式的计算量
####布局优化
避免触发布局
目前,transform 和 opacity 只会引起合成,不会引起布局和重新绘制。整个流程中比较耗费性能的布局和绘制流程将直接跳过,性能显然是很好的。其他的 css 属性改变引起的流程会有所不同,有些属性也会跳过布局,具体可以查看 css Triggers。所以,优化的第一步就是尽可能避免触发布局。
避免快速连续的布局
还有一种情况比强制同步布局更糟:连续快速的多次执行它
javascript 代码
上述代码对一组段落标签执行循环操作,设置 p 标签的width属性值,使其与 box 元素的宽度相同。看上去这段代码是没问题的,但问题在于,在每次循环中,都读取了 box 元素的一个样式属性值,然后立即使用该值来更新 p 元素的 widt h属性。在下一次循环中读取 box 元素 offsetwidth 属性的时候,浏览器必须先使得上一次循环中的样式更新操作生效,也就是执行布局过程,然后才能响应本次循环中的样式读取操作。布局过程将在每次循环中发生。优化代码:
javascript 代码
微信公众号前端开发 |
微信公众号 前端开发 |
开发微信小程序前端 |
评论前必须登录!
注册