Node.js与前端开发实战|青训营笔记

63 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

今天的学习重点为Node.js的应用场景、运行时结构,如何编写Http Sever以及Node.js 的衍生话题,以及如何编写Node.js

1.Node.js介绍

Node.js是一个基于 Chrome V8 引擎的 Javascript 运行环境,也是一种高性能、轻量级的 JavaScript 运行环境,支持服务器端和网络应用开发。 Node.js的最大优势就是可以将不同的技术栈进行结合,让 web 开发变得更加快捷高效。

2.Node.js的应用场景

  • 应用场景一:前端工程化
  • 应用场景二:Web服务端应用

Node.js运行效率接近常见的编译语言,并且社区生态丰富及工具链成熟(npm,v8 inspector),还与前端结合的场景会有优势(SSR),Node.js在这个应用场景的现状是竞争激烈,但是它有自己独特的优势

  • 应用场景三:Electron跨端桌面应用 Node.js在这个场景可以做商业应用、大型公司内的效率工具

3.Node.js的运行时结构

Node.js的运行时结构特点:

- 异步I/O

setTimeout(()=>{
console.log("我后执行")
},1000)
console.log("我先执行")

  1. setTimeout是异步的,上述例子中是要等待一秒钟再输出setTimeout里面的内容,但是再异步,处理请求的时候(或者说在等待那一秒钟到来的时候)在等待过程中,外面的同步内容会先输出,因此先输出“我先执行”,然后结束等待后输出setTimeout里面的内容。
  2. 简单来说当Node.js执行I/O时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内存等待。因此使用Noed.js最大的好处就是在执行I/O的时候不用去等待,不会阻塞线程的执行
- 单线程

指Node.js的JavaScript线程是单线程的,它不太适合做CPU密集的操作。 可以用worker_thread新起一个独立线程,这个线程和主线程没有太多差别,每个线程的模型没有太大变化
优点是:不用考虑多线程状态同步问题,不需要锁;同时还能比较高效地利用系统资源

- 跨平台

在使用Node.js的时候,例如在本地创建一个文件进行基础通信,在不同平台上它会帮我们完成很多跨平台的工作,我们不用考虑太多跨平台的问题。
const net=request('net')
const socket=new net.Socket('/tmp/scoket.sock') an'z