一、Node.js 的概念

1、JavaScript 引擎

浏览器的内核包括两部分核心:

  • DOM 渲染引擎
  • JavaScript 解析引擎

2、什么是 Node.js

脱离浏览器环境也可以运行 JavaScript,只要有 JavaScript 引擎就可以。

Node.js 内置了 Chrome 的 V8 引擎,可以在 Node.js 环境中直接运行 JavaScript 程序(前端程序运行平台)

  • Node.js 没有浏览器 API,即 document,window 的等。
  • 增加了许多 Node.js 专属 API,例如文件系统,进程,http 功能。

3、Node.js 的应用场景

  • 如果你是一个前端程序员,想开发类似 JavaWeb 的简单后端程序,那么 Node.js 是一个非常好的选择。

  • 如果你是一个架构师,想部署一些高性能的服务,那么 Node.js 也是一个非常好的选择。

    • Node.js 通常被用来作一个 BFF 层,即 Backend For Frontend(服务于前端的后端),通俗的说是一个专门用于为前端业务提供数据的后端程序。

4、BFF 解决什么问题

一个前端页面向 服务 A 和 服务 B 发送请求,不同的微服务返回的值用于渲染页面中不同的组件。此时,所有的数据在 PC 端浏览器渲染。

我们可以使用一个 BFF 层提前将页面渲染好,发送给浏览器,那么 BFF 层可以提前将多个服务的数据聚合起来。

二、入门程序

1、hello world

VS Code 创建文件01-hello-node.js

1
console.log('Hello Node.js')

VS Code 打开命令行终端快捷键:Ctrl + ~

运行程序:进入到程序所在的目录,输入

1
node .\01-hello-node.js

2、文件的读取

创建文件02-read-file.js

1
2
3
4
5
6
7
8
9
10
11
12
// 引入Node.js文件系统模块:
// fs是Node.js自带的模块,使用Node.js中的关键字require将模块引入,使用const定义模块常量
const fs = require('fs')

//调用readFile方法读取磁盘文件:异步操作
fs.readFile('./hello.txt', function (err, data) {
//当文件读取失败时,可以获取到err的值,输出错误信息
if (err) throw err
//当文件读取成功时,可以获取到data的值,输出响应的内容
console.log(data.toString())
})
console.log('读取文件')

当前目录下创建 hello.txt,文件内容为 hello Node.js

运行程序,结果如下:

读取文件
hello Node.js

3、服务器端程序

创建文件03-node-server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//引入Node.js的http模块:
const http = require('http')
//调用createServer创建服务器
http
.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, { 'Content-Type': 'text/html' })
// 发送响应数据 "Hello World"
response.end('<h1>Hello Node.js Server</h1>')
})
.listen(8888) //调用listen方法在8888端口监听客户端请求

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/')

运行程序,浏览器访问:http://127.0.0.1:8888/