Node.js入门 | 青训营笔记

106 阅读2分钟

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

1 Node.js的应用场景

image.png

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

其次是使用Nodejs开发Web服务端应用,也就是后端服务。

最后要再说下Electron应用,这里不只是指electron,还包括 nw.js..;这个场景在较大的企业里面非常常见。

前端工程化

  • Bundle: webpack, vite, esbuild, parcel
  • Uglify: uglifyjs
  • Transpile: bablejs,typescript
  • 其他语言加入竞争:esbuild, parcel, prisma
  • 现状:难以替代

Web服务端应用

  • 学习曲线平缓,开发效率较高
  • 运行效率接近常见的编译语言
  • 社区生态丰富及工具链成熟(npm)
  • 与前端结合的场景会有优势(SSR)

Electron 跨端桌面应用

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

NPM 使用介绍

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入  "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:

$ npm -v
2.3.0

2 Node.js的运行结构

image.png

Node.js 运行时结构- V8, libuv

  • V8:JavaScript Runtime,诊断调试工具(inspector)
  • libuv: eventloop(事件循环),syscall(系统调用)
  • 举例:用node-fetch发起请求时.….

简单来看,Node.js 就是运行在服务端的 JavaScript,今天只是一个入门,期望后面可以好好用它