Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.5 向 60 fps 进发(一):JavaScript 优化、Styles 优化 及 Layout 优化 #166

Open
EthanLin-TWer opened this issue May 17, 2017 · 0 comments
Assignees

Comments

@EthanLin-TWer
Copy link
Owner

EthanLin-TWer commented May 17, 2017

⚠不管 JS 还是 CSS 的部分,决定优化措施之前,先 profile 代码性能,找出瓶颈。这些东西是变化的,以实际性能分析数据说话。要养成「优化前先 profile」的意识

It’s important to use “tools not rules!” because architectures change and bugs get fixed. Memorizing rules isn’t going to cut it when that happens. - Paul Lewis

JavaScript

Styles 优化

下面的原则,涉及大量元素的改动、选择时才尤为明显。数据量小的应用随便玩都不会遇到性能瓶颈的,就可以随意点

  • 元素样式的改变,对性能的影响基本来说是线性的。也就是说,减少改动的元素,对性能有线性的改善作用
    image
  • 有的「样式改变」对性能影响较大,有些较小,这是可以理解的,有轻重
  • 选择同一个元素,不同选择器性能也不同,越简单越直接性能越好。一般来说,绝对定位(id/class)> 相对定位(nth:child) & 逻辑关系定位(not:empty

最佳实践

总结起来就两点:

  • 减少改动的元素
  • 降低选择器的复杂度

Layout 优化

image

image

本来自然顺序就是先 JS 再 styles 再 layout。如果你在 JS 中执行一些触发 layout 的动作然后又执行了一些触发 styles 的动作,会导致什么呢?这次 layout 被无效化了。一两次可能无所谓,不过如果你是在循环中做这个事情,那就是不好的实践了。

最佳实践

  • 不要在循环中 同时 触发 Styles 和 Layout 流程
@EthanLin-TWer EthanLin-TWer added this to the Iteration 4: Husky🐶 milestone May 17, 2017
@EthanLin-TWer EthanLin-TWer self-assigned this May 17, 2017
@EthanLin-TWer EthanLin-TWer removed this from the Iteration 4: Husky🐶 milestone Aug 10, 2017
@EthanLin-TWer EthanLin-TWer changed the title 3.5 JavaScript and Styles 3.5 Hit 60fps - JavaScript, Styles and Layouts Aug 11, 2017
@EthanLin-TWer EthanLin-TWer changed the title 3.5 Hit 60fps - JavaScript, Styles and Layouts 3.5 向 60 fps 进发:JavaScript 优化、样式优化 及 布局优化 Aug 11, 2017
@EthanLin-TWer EthanLin-TWer changed the title 3.5 向 60 fps 进发:JavaScript 优化、样式优化 及 布局优化 3.5 向 60 fps 进发(一):JavaScript 优化、样式优化 及 布局优化 Aug 11, 2017
@EthanLin-TWer EthanLin-TWer changed the title 3.5 向 60 fps 进发(一):JavaScript 优化、样式优化 及 布局优化 3.5 向 60 fps 进发(一):JavaScript 优化、Styles 优化 及 Layout 优化 Aug 11, 2017
@EthanLin-TWer EthanLin-TWer reopened this Aug 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant