简介

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。

在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify

Nest 提供了高于这些常见的 Node.js 框架 (Express/Fastify) 的抽象级别,但是仍然向开发者暴露了底层的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。

哲学

近年来,由于 Node.js、JavaScript 已经成为 web 前端和后端应用程序的“通用开发语言”。这促成了诸如 AngularReactVue 等优秀项目的出现,他们提高了开发者的工作效率,并能够创建快速、可测试和可扩展的前端应用程序。然而,尽管 Node (和服务器端 JavaScript)拥有大量优秀的软件库、辅助程序和工具,但没有一个能够有效地解决我们所面对的主要问题,即 架构

Nest 提供了一个开箱即用的应用程序体系结构,允许开发者及其团队创建高度可测试、可扩展、松散耦合且易于维护的应用程序。这种架构深受 Angular 的启发。

安装

开始之前,你可以使用 Nest CLI 创建项目,也可以克隆一个 starter project(两者的结果是一样的)。

若要使用 Nest CLI 构建项目,请运行以下命令。这将创建一个新的项目目录,并使用核心的 Nest 文件和支撑模块填充该目录,从而为项目创建一个传统的基本结构。建议初学者使用 Nest CLI 创建新项目。我们将 第一步 章节中继续采用这种方法。

$ npm i -g @nestjs/cli
$ nest new project-name

可选方式是利用 Git 安装基于 TypeScript 的 starter project:

$ git clone https://github.com/nestjs/typescript-starter.git project
$ cd project
$ npm install
$ npm run start

打开浏览器并导航到 http://localhost:3000/ 地址。

若要安装基于 JavaScript 的 starter project,请在执行上面的命令时使用 javascript-starter.git

你还可以通过 npm (或 yarn)来安装的核心和支撑文件,从头开始手动创建一个新项目。当然,在这种情况下,你将自己担负起创建项目样板文件的工作。

$ npm i --save @nestjs/core @nestjs/common rxjs reflect-metadata