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

130 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

Node.js

01.认识Node.js

Node.js是一个基于Chrome V8引擎(进行代码解释)的Javascript运行环境(平台),不是js框架。

简单的说 Node.js 就是运行在服务端的 JavaScript。

02.Node.js的应用场景

前端工程化

早期 ajax, jquery 比较流行的时候,我们直接在页面中引入需要的 lib 即可。后续随着模块化、transpile 逐渐成熟、需求逐渐增多,对后端能力的需求也逐渐强烈。反过来说,也正是 Node.js 赋予了 js 开发者在浏览器外运行代码的能力,加速催生了这些项目的出现。

  • Bundle:webpack,vite,esbuild,parcel
  • Uglify:uglijs
  • Transpile:bablejs.typescript
  • 现状 :难以替代

Web服务端的应用

Node.js 开发 Web 服务端应用,也就是后端服务。

  • 学习路线平缓,开发效率比较高
  • 运行效率接近常见的编程语言
  • 社区生态丰富与工具链成熟
  • 与前端结合的场景具有优势
  • 现状:竞争激烈Node.js有自己的优势。

Electron跨段桌面应用

这里不只是指 electron,还包括 nw.js.. ; 这个场景在较大的企业里面非常常见。

  • 商业应用:vscode,slack,discord,zoom
  • 大型公司内的效率工具
  • 现状:大部分场景在选型时都值得考虑

03.Node.js运行时结构

Node.js 运行时主要由 解释器、标准库和本地模块组成。

解释器:V8 引擎就是 JavaScript 解释器,它负责解析和执行 JavaScript 代码。

本地模块:Node.js 集成了众多高性能的开源库,它们使用 C/C++ 语言实现,比如:图中的libuv,nmp,zlib,OpenSSL,c-ares

标准库:封装在本地模块的 C/C++ 接口,提供一套 JavaScript 接口给开发人员,并且要保持接口在不同平台上的一致性。这套接口就是Node.js标准库

图解: image(4).png

Node.js运行时结构的特点

  • 异步I/O
  • 单线程
  • 跨平台

异步I/O : 当Node.js执行I/O操作时,会在响应返回后操作恢复操作,而不是阻塞线程并占用额外内存等待。

单线程 :JS线程 + uv线程池 + V8任务线程池 + V8 lnspector线程

跨平台 :Node.js跨平台+JS无需编译环境 = 开发成本低,整体学习成本低

04.编写Http Server

const http = require('http');

//创建web服务器
const server = http.createServer((req,res) =>{
  //设置请求头
  res.setHeader('Content-Type', 'text/html');

  res.end(
 `
 <html>
 <head></head>
 <body>
   <h1>MY APP</h1>
 </body>
 </html>
  
  ` );
} )
// 监听端口启动服务
server.listen(5000,()=>{
    console.log(`5000端口开启成功`);
});