这是我参与「第五届青训营 」笔记创作活动的第7天。
前言
简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。 本节课程主要分为四个方面:
- 介绍 Node.js 的应用场景
- 介绍 Node.js 运行时结构
- 如何用编写 Http Server
- 延伸话题
- 课前 安装 Node.js。可以选择以下一种方式: 从 Node.js 官网安装 nodejs.org/en/ Mac, Linux 环境可以使用 nvm 进行安装 github.com/nvm-sh/nvm NVM_NODEJS_ORG_MIRROR=npmmirror.com/mirrors/nod… nvm install 16
- 课后 了解并尝试使用更多 Node.js 的原生模块 nodejs.org/dist/latest… 学习在 npm 上搜索并安装模块 www.npmjs.com/
node的诞生
JavaScript最初是为浏览器创建的语言,执行环境是只能在客户端的浏览器中。然后,在浏览器中的 JavaScript 的能力是有限的,其中包括 网页中的 JavaScript 不能读、写、复制及执行用户磁盘上的文件或程序。即JS没有直接访问操作系统的功能。 因此,JavaScript语言是不适用于开发后端程序的。因为后端开发显然是要经常访问系统里的资源。 后来在2009年,美国程序员Ryan Dahl开源了一个Node项目。Node在后端为JavaScript创建了一个运行环境,即Node环境,能够让JavaScript脱离浏览器运行,可以和其他后端语言如PHP、Python、Ruby等一样在服务器上运行。
安装 npm
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
$ npm -v
2.3.0
Node.js的应用场景——前端工程化
- 1.Bundle:wedpack,vite,esbuild,parcel
- 2.Uglify:uglifyjs
- 3.Transpile:bablejs,typescript
- 4.其他语言加入竞争:esbuild,parcel,prisma
- 5.现状:难以替代
Web服务端应用
- 1.学习曲线平缓,开发效率较高
- 2.运行效率接近常见的编译语言
- 3.社区生态丰富及工具链成熟(npm,V8 inspector)
- 4.与前端结合的场景会有优势(SSR)
- 5.现状:竞争激烈,Node.js有独特的优势
Electron跨端桌面应用
- 1.商业应用:vscode,slack,discord,zoom
- 2.大型公司内的效率工具
- 3.现状:大部分场景在选型时,都值得考虑
V8,libuv
- 1.V8:JavaScript Runtime,诊断调试工具
- 2.libuv:eventloo(事件循环),syscall(系统调用)