2023,没有搞不定的JavaScript!

译者 | 涂承烨
由于代码可见性低,使用JAVA脚本进行编码可能会很耗时 。这里有12个优雅的JavaScript技巧,可以帮助你在2023年优化代码生成 。
JavaScript已经成为下一批开发人员中最主要脚本语言 。对于前端编程、构建交互式、功能丰富的网站以及快速流畅的Web应用程序来说,这是一个不可思议的工具 。每个前端程序员都知道JavaScript,然而,如果在不知情的情况下使用它,情况会变得更糟 。糟糕的JavaScript代码会影响网站的性能、渲染速度和加载时间 。在这篇博文中,我们将分享一些技巧,帮助你优化未来的JavaScript之旅 。让我们一起来看看 。
一、缩小文件的JavaScript代码缩小代码与混淆代码不同 。然而,这两种方法都是转换JavaScript的方法——读起来更复杂或更小 。缩小实现了后者,并可以缩小文件大小以减少页面加载时间 。换行符、多余空格、注释等都会增加JavaScript文件的大小,并影响页面加载的速度 。缩小代码可以解决这个问题 。
二、排除.js库中未使用的组件开发人员使用JavaScript库,如jQuery UI或jQuery Mobile等 。这意味着代码包含了每个库的所有组件,而你可能只需要其中的一些组件 。
如果你精通于理解将在库的哪个包中包含哪些组件,那么就选择那些特定的组件 。你的网站将加载更快,用户将得到一个很好的体验 。
三、使用HTTP/2协议这一主要互联网协议(HTTP)的更新版本可以为开发人员提供许多很酷的功能 。它的众多优点之一是多路复用 。这允许你使用TCP连接并发地接受类似的请求和响应 。此外,早期的互联网协议需要对JavaScript理论有透彻的了解和增强的知识,而HTTP/2可以使JavaScript快速加载 。因此,HTTP/2在性能上要比HTTP协议好得多 。

2023,没有搞不定的JavaScript!

文章插图

2023,没有搞不定的JavaScript!

文章插图
四、GZIP模块适用于Apache、Node.js和NginxGZIP是一种令人惊叹的压缩技术,它是在几年前互联网还没有像现在这样高速发展的时候引入的 。它减少了Web服务器上的文件,将静态文件压缩到真实大小的80%到90% 。由于JavaScript是文本文件,你可以使用GZIP来压缩JavaScript文件,也有助于减少页面加载时间 。
2023,没有搞不定的JavaScript!

文章插图
有一些模块可用于Web服务器,包括Nginx和Apache 。由于JavaScript同时用于前端编程和后端编程,因此可以使用Node.js的zlib模块来压缩JS文件 。
复制
// Code to run zlib module
Const zlib = require(‘zlib’);
使用GZIP的代码:
复制
Const gzip = zlib.createGzip();
Const fs = require(‘fs’);
Const inp = fs.createReadStream(‘input.txt’);
Const out = fs.createWriteStream(‘input.txt.gz’);
Inp.pipe(gzip).pipe(out);
五、缩短DOM层次和访问深度DOM (Document Object Model,文档对象模型)是组成网页结构的对象的数据表示形式 。每个Web页面都是文档,通常是一个html文件,文档中的每个对象称为节点 。作为对用户输入的响应,JavaScript会影响DOM及其节点改变结构、样式和内容 。
每次JavaScript代码访问DOM组件或修改DOM时,这取决于开发人员是怎么处理DOM的 。如果系统必须在DOM中重新计算多个节点,这将消耗更多内存并降低性能 。在优化代码时,修剪冗长的DOM的树型结构层次是一个很好的方法 。保持较小的DOM有很多好处:
  • 减少内存泄漏的风险
  • 优化网络效率和负载性能
  • 良好的执行性能
下面是一些最小化DOM的方法:
  • 减少DOM引用
  • 回避复杂动画
  • 保持简单的css规范
六、将JavaScript代码和CSS放在head部分此方法帮助你更快地加载网页;但是,你需要对DOM和SCCOM有很好的理解 。这样做的目的是在head部分保留更少的CSS和JavaScript代码,以便页面立即加载,而更一般的代码通常保存在不同的.CSS和.js文件中 。
七、抛弃等待,放到promise.all里一起执行你应该将调用和未解决的promise合并到一个数组中,而不是等待执行 。例如,如果要对数据库进行多次调用,通常需要等待的时间是每次调用完成的时间之和 。
复制
//Code to call two databases
const getUsers = async () => {
const consumers = await findAllConsumers();
const managers = await findAllManagers();
Return { consumers, managers}
}
最好的方法之一是同时运行两个调用,并在大约一半的时间内解析输出 。


推荐阅读