通过修改语法与启动快照的方式优化node项目的启动速度
思路:
1、通过语法解析将js文本顶部的require与import 优化为一下形式
// 优化前
const path = require('path')
console.log(path.join('a', 'b'))
// 优化后
let path;
function get_path () {
if (path) {
return path
} else {
path = require('path')
return path
}
}
console.log(get_path().join('a', 'b'))
如何使用语法树优化代码可以参考:如何通过babel去操作ast, 并生成对应的代码
2、 将js文件生成为快照,并通过注入快照的方式启动项目
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js
# Run snapshot.js to intialize the application and snapshot the
# state of it into snapshot.blob.
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ echo "console.log(globalThis.foo)" > index.js
# Load the generated snapshot and start the application from index.js.
$ node --snapshot-blob snapshot.blob index.js
I am from the snapshot
参考文章:
本作品采用《CC 协议》,转载必须注明作者和本文链接