JavaScript 性能优化技巧分享

  • 时间:
  • 浏览:0
  • 来源:UU直播快三官方_大发UU直播快3

原文链接:https://www.sitepoint.com/javascript-performance-optimization-tips-an-overview/

web Animations API 是4个 即将到来的功能集,它我不要 都后能 脱离主系统应用应用程序执行高性能的 JavaScript 动画。但就目前而言,还前要继续使用 CSS 转换等技术。

将会浏览器无法识别 async 函数,则会被认为是旧版本的浏览器,此时就会用到 polyfill 包。将会能识别,用户则将得到现代浏览器的解决。

 

你将会将会注意到了,最大的瓶颈是加载网站所需的时间。具体来说之后我 JavaScript 的下载、解析、编译和执行时间。除了加载更少的 JavaScript 文件将会加载的更加灵活以外,看起来这麼其它土法律法律依据。

确保 Webpack 在主 JavaScript 包前一天 已完成加载,这麼所有其它 chunk 中的运行时间会剥离到所一群人的文件中,一些情况也被成为 runtime.js。累似 :

JavaScript 代码首先会被解析,也之后我读取并转换成可用于编译的计算机索引的底部形态,何如让再被编译成字节码,最后被编译成机器码,用于设备/浏览器执行。

从前都后能 不能不都后能 使用更少量的 JavaScript,这也因为你的项目将会不再前要整个Lodash库。将会前要使用 JavaScript 库,不都后能 都后能 都后能 考虑使用 React 以外的东西,比如 Preact 将会 HyperHTML,它们之后我 React 的1/20大小。

另外,Webpack 前要运行时间来工作,并将其注入到它生成的所有 .js 文件中。将会使用该 commonChunks 插件,则都后能 不能不都后能 使用以下内容将运行时抽取到 Chunk 中:

Top 10 JavaScript编辑器,你在用哪个?

将会你的应用系统应用应用程序能在60 毫秒内响应用户的操作,这麼用户会认为该响应为即时的。这适用于可点击的元素,不适用于滚动或拖动操作。

考虑到大多数动画全是加载或用户交互的过程中运行,这都后能 不能不都后能 为你的 web 应用系统应用应用程序提供非常重要的调整空间。

你不前要使用框架、组件和客户端路由,就能获得有有哪些好处。你只前要简单地在主 JavaScript 文件中写入以下内容:

在60 Hz的显示器上,朋友希望动画和滚动时每秒有60 帧,一些情况下每帧共要为16ms。在这16ms的时间内,实际都后能 不能不都后能 都后能 8-10ms来完成所有工作,其余时间则由浏览器的内部内部结构和其它差异处于。

Webpack 3 有着神奇的功能,被称作代码分割和动态导入。它我不要 将所有 JavaScript 模块捆绑到4个 app.js 整包中,之后我使用 import( ) 语法自动分割代码何如让进行异步加载。

所一群人面,CSS 动画和转换会在主系统应用应用程序中运行,将会我不要 都后能 高效执行,则能解决重新布局/重排的情况老出。

相关阅读:

JavaScript 作为当前最为常见的直译式脚本语言,将会广泛应用于 Web 应用开发中。为了提高Web应用的性能,从 JavaScript 的性能优化方向入手,会是4个 很好的选则。

页面加载应该在60 0毫秒内完成。在移动设备上,这是4个 不能自己达到的目标,将会它涉及到页面的互动,而不仅仅是在屏幕上渲染和滚动。

转载请注明出自:红心火龙果 城控件

一些土法律法律依据都后能 不能不都后能 缓解一些情况,比如使用 service workers 在后台的从前系统应用应用程序中执行每项工作,将会使用 asm.js 编写更容易编译机器指令的代码。

现在将会不再是在 </body> 开始英文英文标签前一天 含晒 晒 多个 <script> 的时代了。现在,都后能 不能不都后能 在 npm 上找到各式各样的工具包,然都后能 不能不都后能 都后能 不能 将有有哪些工具包和 Webpack 捆绑在4个 单个的 1MB 大小的 JavaScript 文件中,在完成数据计划时,提醒用户的浏览器进行爬取。

某种生活土法律法律依据是创建4个 独立的 bundle,并根据实际条件来加载它们。Babel 转换编译器在 babel-preset-env 的帮助下,会使一起去面临新旧某种生活浏览器的情况更加容易解决。

1. 我觉得 JavaScript 解析的时间长度和包的大小全是完正线性的,何如让前要解决的 JavaScript 越少,则所花时间越少。

2. 你使用的每4个 JavaScript 框架(React,Vue,Angular,Preact ...)全是从前抽象层次(除非它是4个 预编译的)。这不仅会增加你的包的大小,何如让会让人的代码调快,将会你全是直接与浏览器通信的。

红心火龙果 城控件技术团队的博客即将同步搬运至腾讯云+社区,邀请朋友一起去去入驻:https://cloud.tencent.com/developer/support-plan

编写高性能代码并全是这麼重要,将会对于宏观计划通常这麼有哪些影响。60 k ops/s 听起来好于 1k ops/s,但在大多数情况下整体时间全是之后我会有所改变。

即使有有哪些 JavaScript 动画库使用 CSS 转换,合成属性和 requestAnimationFrame( ),何如让它们仍然运行在 JavaScript 的主系统应用应用程序上。基本上有有哪些库会使用内联样式每16ms访问一次 DOM。你前要确保所有的 JavaScript 全是每帧8ms以内完成,不都后能 保持动画的平滑性。

除去启动网站之外,JavaScript 代码又是何如实际工作的呢?

JavaScript 代码全是预编译的,它在浏览器上是可读的。

何如让是编译代码和 polyfills 的每项。将会你正在编写现代 JavaScript 代码(ES6 +),则都后能 不能不都后能 使用 Babel 将其转换为 ES5 兼容的代码。与原生 ES6+ 代码相比,编译不仅增加了文件的大小,还增加了僵化 性,何如让经常会老出性能下降的情况。

尽管目前这麼高性能代码的绝对定义,但却处于4个 以用户为中心的性能模型,都后能 不能不都后能 用作参考:RAIL模型。

现代加载最佳实践(Chrome Dev Summit 2017)

4个 全是之后我规范但行之有效的土法律法律依据,是将以下内容放到4个 内联脚本中:

朋友所能做的,之后我解决使用 JavaScript 动画库。都后能 不能不都后能 在使用常规的 CSS 转换和动画完正无法实现时,才去使用有有哪些库。

我不要 提高网站的运行强度,就前要确保网站能快速的加载 JavaScript 文件,以实现快速的互动。你的 JavaScript 代码应该被分成更小的、可管理的 bundle,一起去尽将会地进行异步加载。在服务器端,请确保启用了 HTTP 2.0,以便实现调快的并行传输和 gzip/Brotli 压缩,从而大大减少了 JavaScript 的传输大小。

将会你的应用系统应用应用程序前要在页面上用到一些小部件,它将动态加载所需的支持代码。

 让朋友来看看一些统计数据:

1分钟选好最共要你的JavaScript框架

在进行代码优化前一天 ,请考虑你当前正在构建的内容。你正在建立的是4个 框架还是4个 VDOM 库?你的代码不是 前要每秒执行数千次操作?你不是 正在做4个 对时间要求较为严格的库来解决用户输入和/或动画?将会这麼,你前要把时间和精力转移到更有影响力的地方。

除此之外,你还很将会使用 babel-polyfill 软件包和 whatwg-fetch,来修复旧版本浏览器中的缺失功能。何如让将会你正在编写 async/await,你还前要使用包 regenerator-runtime 的生成器来进行编译。

在 JavaScript 代码运行前一天 ,前要完成所有的有有哪些解析、编译和执行工作。在 ChromeV8 引擎中,解析和编译占 JavaScript 执行总时间的60 %左右。

将会你有4个 耗时刚刚,前要持续运行的任务时,请确保把它分成很小的块,以便允许主系统应用应用程序对用户的输入操作做出反应。不应该老出4个 任务延迟超过60 ms的用户输入。

从前非常重要的方面是:JavaScript 是单系统应用应用程序的,何如让在浏览器的主系统应用应用程序上运行。这因为一次都后能 不能不都后能 运行4个 系统应用应用程序。将会你的 DevTools 性能时间线充满黄色峰值,一起去 CPU 占用率达到60 %,则将老出丢帧的情况。这是滚动操作常老出的,也是很讨厌的某种生活情况。

大问题是,你为 JavaScript 软件包换成了近 60 KB 的内容,这不仅是4个 巨大的文件,何如让预示着巨大的解析和执行花费,以便我不要 都后能 支持旧版本的浏览器。

从根本上说,大多数 JavaScript 的性能大问题,全是之后我在于运行代码某种生活,之后我在代码开始英文英文执行前一天 前要采取的一系列步骤。

JavaScript 开发人员前要知道的简写技巧

统统在这每项中,应该了解两件事情:

本文从加载、上下文、解析、编译、执行和捆绑等多个方面来讲解 JavaScript 的性能优化技巧,以便让更多的前端开发人员掌握这方面知识。

朋友在这里讨论抽象层次的大问题。计算机上运行的大多数代码全是编译后的二进制格式。意思是说,除了所有的操作系​​统级别的抽象外,代码都都后能 不能不都后能 在硬件上本地运行,不前要准备工作。