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

80 阅读3分钟

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

一、本堂课重点内容:

  • Node.js的基本介绍
  • Node.js应用场景
  • Node.js运行时结构
  • 课堂例子

二、详细知识点介绍:

什么是 Node.js

  • 它是一个 JavaScript 的运行环境:Node.js 作为运行环境可以让 JavaScript 脱离浏览器,在服务器端单独执行。如果客户端和服务器端使用相同的开发语言,可以在很大程度上达到客户端和服务器端代码的共用。
  • 依赖于 Chrome V8 引擎进行代码的解析:Chrome V8 负责在非浏览器解析情况下解析 JavaScript 代码。
  • Node.js 特点:异步I/O,单线程,跨平台(后面会详细介绍)

Node.js应用场景

  • 前端工程化

    • Bundle(构建):webpack,vite,esbuild,parcel
    • Uglify:uglifyjs
    • Transpile(语法转换):bablejs,typescript
    • 其他语言加入竞争:esbuild,parcel,prisma
    • 现状:难以替代
  • Web服务端应用

    • 学习曲线平缓,开发效率较高
    • 运行效率接近常见的编译语言
    • 社区生态丰富工具链成熟(npm,V8 inspector)
    • 与前端结合的场景会有优势(SSR)
    • 现状:竞争激烈,Node.js有自己独特的优势
  • Electron跨端桌面应用

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

    • BFF应用、SSR应用,距离:Modern.js
    • 服务端应用:头条搜索,西瓜视频,懂车帝
    • Electron应用:飞连,飞书
    • 每年新增1000+Node.js应用

Node.js运行时结构

1660136435475.png ** 特点**

异步IO

 1.   在JS读取文件的过程中,需要等待文件读取完毕后才能继续执行后面的操作, Node.js 中使用事件异步调用的方式来解决这种阻塞 I/O 的情况,避免了阻塞 I/O 所需的等待,所以说它具有异步 I/O 的特点。

单线程

1.   进程就是一个应用程序的一次执行过程,它是一个动态的概念。而线程是进程中的一部分,进程包含多个线程在运行。
2.   单线程就是指进程中只有一个线程,阻塞 I/O 模式下一个线程只能处理一个任务,而在非阻塞 I/O 模式下,一个线程永远在处理任务,这样 CPU 的利用率是 100%。
3.   其实是说JS单线程:实际Node.js还是有很多线程的 :JS线程+uv线程池+V8任务线程池+V8 Inspector线程

跨平台

1.   大部分功能、api跨平台
2.   Node.js跨平台+JS无需编译环境(+Web跨平台+诊断工具跨平台)
3.   开发成本低,整体学习成本低

Node.js 课程例子

const http = require('http')
//创建server
const server = http.createServer((req,res)=>{
    res.end('hello')
})
//监听端口(3000)
const port = 3000
server.listen(port,()=>{
    //成功监听,触发回调函数
    console.log(`server listens on: ${port}`)
})

三、课后个人总结:

Node是使用Js语言编写,对与我们前端而言学习成本相对于别的后端语言来说要少的多,Node非常适用于一些小型项目,这样可以大大减少服务器的投入成本,使我们的服务器使用率最大化,减少成本。