在windows平台上编译node
具体步骤可以参考: github.com/nodejs/node…
我使用的平台是 windows, 想要学习的是 node18 的版本, 所以参阅该文档的编译方式.
- 准备操作
# find your vcpkg
# double check vcpkg install the related file
vcpkg owns zlib.lib
vcpkg owns zlib1.dll
vcpkg integrate remove
- 现在一些必要的环境, 注意安装这些都需要配置环境变量
这里 emmm. 我的版本信息和它有些许不一致, 但也整正常编译过了. . .
python: apps.microsoft.com/detail/9nrw…
nasm: www.nasm.us/
- 下载指定版本的node
下载对应的压缩包
然后解压后, 通过 管理员 权限打开我们的cmd, 然后 执行 ./vcbuild.bat 进入漫长时间的等待
编译完成之后, 会在当前目录下创建一个新的目录 out/Release
同时, 在vcbuild所在的这个目录下, 创建 node.sln这个vs的解决方案
直接双击, 用vs打开.
fprintf(stdout, "hello, node. windows main method running\n");
然后进行debug模式的编译
a.js的内容为
console.log("hello, world")
进行debug编译, 进行漫长的等待.
我们会在弹出的控制台上看见这样的输出.
Great! 接下来我们可以自己对着node.js代码随意捣鼓, 直到实现我们自己的node.js了 😉 只要我们想
在信息时代,客观障碍已不复存在。所谓障碍都是主观上的。
如果你想动手开发什么全新的技术,你不需要几百万美元的资金,你只需要在冰箱里放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。 -DOOM启示录
来点有意思的话题吧. 我们console是如何输出的呢? 从 node 的main运行, 到process的初始化, 到env的初始化, 等
他的输出流真的是process.stdout 嘛?
那process.stdout是谁呢?
从node18的源码中, 可以看到为了维护兼容性, 我们可以写出如下的代码 , 不过node.js的源码对于我而言, 有点猪脑过载了, 还是自己太菜了. 后期可能会学习一些简单一点的代码
例如 cpython ? 也可能是 quickJS? 以后在说吧~
不过用一门语言实现了另一门语言, 这真的很酷啊 😎
一起加油 : )
const myConsole = new console.Console(process.stdout, process.stderr);
myConsole.log("对的, 这是我们自己创建的console!");