这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
听了oyyd老师的nodejs课程,做一个简单的笔记,补充一下对于nodejs知识的欠缺。
为什么要用nodejs
前端工程化
随着前端功能不断增加,对于大规模应用有了工程化的需求,而nodejs整合了一条完整且相当好用的工具链,非常适合前端工程化。除了node,也有着像webpack,vite等,但都无法替代nodejs。
Web服务端应用
开发后端服务语言种类很多,并且各自有着各自的优缺点。而nodejs使用的javascript更为流行并且学习成本更低,同时完整的工具链和丰富的社区资源也使得项目开发效率更高。当遇到前后端结合的场景时像ssr,将会有着更大的优势。
跨端应用
基于v8的node可以运行在任何地方,因此跨端开发是它一个很大的特点,在开发一些内部效率工具时成本会相当低。最常见的vscode就是用它写的,还有很好用的飞书。
nodejs的运行
借用上课时的图,它清晰的展示了nodejs运行时都有什么部分在工作(虽然很大部分我都没听说过)
异步io
在执行文件读写等io操作时是异步的,并不会阻塞进程,等待执行。
“单线程”
nodejs单线程指的是js线程单,但同时会有uv线程池、v8线程池等其他线程,少了多线程锁可以将注意力更多放在业务逻辑上。
跨平台
nodejs的大部分功能都是无缝跨平台的,其他不能直接使用的部分也能通过一些其他工具进行简单处理后跨平台。
http server的例子
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
这里粘一个官网给的例子,没怎么写过后端,但也大体能懂做了一个什么事情。很容易看到nodejs做这件事的代码相当易懂,作为一个只写过一点前端的新人来说也容易上手后端。当然,node开发前端应用时同样也是很方便简洁的。