Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又高效。Node.js 的包生态系统(npm)是全球最大的开源库生态系统。
一些基础概念:
-
调试 :你可以使用
node inspect
命令和 Chrome 开发者工具来调试你的 Node 应用程序。 -
流:流在 Node.js 中是处理数据的重要方式。它们是数据的集合 - 仅仅是未必一次全部有效的数据。有四种基本的流类型:Readable、Writable、Duplex 和 Transform。
-
模块:在 Node.js 中,文件和模块是一一对应的。简单的说,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON或编译过的C++扩展。
流行的 Node.js 框架:
-
Express 是一个简洁、灵活的 Node.js Web应用框架, 提供一系列强大的特性,帮助你创建各种 Web和移动设备应用。
-
Koa 被认为是 Express 的继任者,由同一团队开发。使用 ES2017 async 函数,Koa 允许你丢弃回调函数,并且增强错误处理。
-
NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置 TypeScript(但还允许开发者用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数响应式编程)。
-
事件循环: Node.js 的一个关键特性就是其事件驱动的非阻塞性 I/O 模型。Node.js 中的操作都是以非阻塞方式进行的,而会被阻塞的操作将由事件队列来处理,当操作完成时,会触发一个事件。
-
错误处理 :在 Node.js 中,错误处理是非常重要的。它有两种类型的错误:编程错误(代码错误)和运行时错误(系统错误)。可以使用 try/catch 块处理编程错误,而运行时错误通常通过监听
error
事件来处理。 -
Express.js:Express.js 是最流行的 Node.js 框架之一,提供了许多强大的特性,如模板引擎支持、静态文件服务、中间件等。
-
Koa.js:Koa.js 的设计理念是能够更轻量、更富有表现力、更健壮。Koa的中间件模型是一个优秀的特性,它可以将一组中间件组织为一个处理请求的堆栈。
-
NestJS: NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。NestJS 使用了类似 Angular 的模块化结构,并支持 TypeScript,这使得 NestJS 成为构建大型企业级应用程序的理想选择。
Express.js
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`);
});
Koa.js
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
NestJS
为了写一个 NestJS 应用,你首先需要安装 Nest CLI:
npm i -g @nestjs/cli
然后,你可以使用 CLI 来生成一个新的项目:
nest new my-nest-project
然后,你可以在刚生成的项目里创建一个简单的 hello world 控制器:
// src/app.controller.ts
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
@Get()
getHello(): string {
return 'Hello World!';
}
}
请注意,以上代码需要在已经安装了 Node.js 的环境中运行,并正确安装了相应的框架。如果你还没有安装这些框架,你可以使用以下命令进行安装:
npm install express
npm install koa
npm install -g @nestjs/cli