企业做网站优点,wordpress引用php,网站的经费预算,施工企业报验资质清单Terser通过调用API来实现代码的压缩和优化功能 起源通过API来调用API调用过程中的一个隐含的技术点 - 异步调用和Promise对象官方文档中的一个有点容易忽略和混淆的地方关于Promise 起源
书接 上回#xff0c;对Terser的功能做了一个初步的探索。在官方的主页上#xff0c;有… Terser通过调用API来实现代码的压缩和优化功能 起源通过API来调用API调用过程中的一个隐含的技术点 - 异步调用和Promise对象官方文档中的一个有点容易忽略和混淆的地方关于Promise 起源
书接 上回对Terser的功能做了一个初步的探索。在官方的主页上有API和CLI二种调用方式。下面先介绍API的调用方式。
通过API来调用
Terser官方对于API的调用示例如链接: Terser API Reference。下面我们通过几个文件来实验
minify.js
#!/usr/bin/env node
use strictconst fse require(fs-extra)
const { minify } require(terser);// Global functions:// terser minify - pms.libv3.js
(minify({pms.libv3.js: fse.readFileSync(pms.libv3.js, utf-8)}, {})).then(res {fse.writeFileSync(pms.libv3.min.js, res.code, utf-8);
});pms.libv3.js
function osmpTempKVPairs() {return {set: function(k, v) {localStorage.setItem(k, v);},get: function(k) {return localStorage.getItem(k);}}
}API调用过程中的一个隐含的技术点 - 异步调用和Promise对象
细心的同学肯定发现了minify()函数调用和fse.wirteFileSync()函数调用没有按常规的方式一行一行的直接按顺序调用而是以(minify()).then()的方式里进行回调。
原因是minify是一个异步函数它在被调用后就直接返回了返回值是一个Promise对象。如果这个时候顺序去调fse.writeFileSync()会报错因为minify还没有执行完压缩和优化的过程尤其当文件比较大的时候官方示例中没有提到 所以正确的做法是在调用minify()之后 正确的方式是获取minify()的返回值Promise对象继续调用Promise()对象的then()方法在方法里写入压缩和优化后的代码到min.js文件。
官方文档中的一个有点容易忽略和混淆的地方 关于Promise
一个 Promise 必然处于以下几种状态之一
待定pending初始状态既没有被兑现也没有被拒绝。如上文日志中的Pending状态已兑现fulfilled意味着操作成功完成。已拒绝rejected意味着操作失败。
.then() 方法最多接受两个参数第一个参数是 Promise 兑现时的回调函数如上文中代码里的res第二个参数是 Promise 拒绝时的回调函数。每个 .then() 返回一个新生成的 Promise 对象可被用于链式调用。
MDN文档中对于Promise的说明同时也有详细参考的例子。 : Promise 对象表示异步操作最终的完成或失败以及其结果值
各位同学自行打开链接查看。如果 有不明白的随时给我留言有问必回。