初识 Nest JS
Nest 是一个渐进的 Node.js 框架,它能够在 TypeScript 和 JavaScript (ES6、ES7、ES8)之上构建高效、可伸缩的企业级服务器端应用程序。
Nest 基于 TypeScript 编写并且联合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的相干理念。在设计上的很多灵感来自于 Angular,Angular 的很多模式又来自于 Java 中的 Spring 框架,依赖注入、面向切面编程等,所以咱们也能够认为:Nest 是 Node.js 版的 Spring 框架
Nest 框架底层 HTTP 平台默认是基于 Express 实现的,所以无需放心第三方库的缺失。
NestJs 的核心思想:就是提供了一个层与层间接的耦合度极小, 抽象化极高的一个架构体系。
脚手架 NestJS CLI
与其它框架一样,NestJS 也有本人的脚手架,它可帮忙咱们疾速初始化 Nest 我的项目以及开发和保护 Nest 应用程序。
装置
绝大多数人可能会抉择全局装置,因为不便,但须要留神的是,全局装置 任何 npm
软件包都会将确保它们运行正确版本的责任留给咱们开发者本身。这还意味着,如果你有不同的我的项目,每个我的项目都将运行 雷同 版本的 CLI。
npm install -g @nestjs/cli
⚠️这里须要留神 Node 版本,可能会遇到脚手架装置胜利了但初始化我的项目时报错,这里倡议应用高版本 node,我这里用是 node 版本是16.19.0
当然你也能够不抉择全局装置,Nest
提供了 @nestjs/cli
包同样能够应用 nest
命令
npx @nestjs/cli@latest
nest 命令
装置完脚手架之后咱们能够通过 nest --help
看看它都有哪些命令:
new|n
该命令是用来初始化一个 Nest
我的项目的
nest new project-name
该命令示意初始化一个名为 project-name
的Nest
我的项目,并且会帮你装置好所有必要的依赖,几乎就是一步到位,十分棒 \~
上图中咱们能够看到 nest|n
,n
代表 nest
的别名,所以为了不便,你也能够这样应用:
nest n project-name
generate|g
该命令能够为咱们生成各种代码,其中包含:控制器 Controller、服务 service、模块 module 等。
# 生成控制器
nest generate controller controller-name
# 生成服务
nest generate service service-name
# 生成模块
nest generate module module-name
当你感觉一个一个生成很麻烦时,能够应用上面这个命令
nest g resource filename
当你执行这个命令时,它会让你抉择生成那种类型的代码:
这里咱们间接抉择REST API
,它会再问你是否须要生成 CURD 代码
咱们抉择是就好了,这个它就为咱们生成了一个残缺的 CURD 代码。
咱们会发现生成的文件中可能会有一些测试文件,当咱们不须要这些文件时,能够间接删除掉,或者在生成时加上 --no-spec
示意不生成测试文件
nest g resource filename --no-spec
当然它还能够生成更多类型的代码,能够通过以下命令查看:
nest g --help
start
该命令用于启动开发服务,反对 watch 和调试
# 启动
nest start
# 启动并监听文件变动
nest start --watch
#启动并调试
nest start --debug --watch
这些命令能够在 package.json
文件中找到
所以咱们本地开发个别应用 npm run start:dev
启动我的项目
build
该命令用于我的项目打包
nest build
它有两种编译形式可选:--wepback
和 --tsc
,默认是 tsc 编译,也能够切换成 webpack。
区别在于 tsc
模式并不会将 node_modules
模块打包进去,而 webpack
模式则会将 node 模块打包成单文件
脚手架配置文件
Nest
脚手架与其它脚手架不同的是,它生成的我的项目下会有一个脚手架配置文件nest-cli.json
,下面咱们用的命令的很多选项都能够在这个文件中间接配置。
该文件的顶级属性如下:
"collection"
:指向用于生成组件的原理图汇合;(最好不要改)"sourceRoot"
:指向规范模式构造中单个我的项目的源代码根目录,或 monorepo 模式构造中的 默认我的项目"compilerOptions"
:编译相干的配置选项"generateOptions"
:全局生成相干的配置选项"monorepo"
:(仅限 monorepo)对于 monorepo 模式构造,该值始终为true
"root"
:(仅限 monorepo)指向 默认我的项目的我的项目根目录
全局编译选项
这些属性指定要应用的编译器以及影响 任何 编译步骤的各种选项,无论是作为 nest build
或的一部分 nest start
,也不思考编译器,无论tsc
是还是 webpack。
名称 | 形容 |
---|---|
webpack |
如果是 true ,应用 webpack 编译。如果false 存在或不存在,请应用tsc . 在 monorepo 模式下,默认为true (use webpack),在规范模式下,默认为false (use tsc )。 |
tsConfigPath |
(仅 monorepo ) 指向蕴含在不带选项的状况下调用或调用 tsconfig.json 时将应用的设置的文件(例如,当构建或启动默认我的项目时)。nest build `nest start`project |
webpackConfigPath |
指向 webpack 选项文件。如果未指定,Nest 会查找文件webpack.config.js . 请参阅上面的更多细节。 |
deleteOutDir |
如果true ,则每当调用编译器时,它都会首先删除编译输入目录(如 中配置tsconfig.json ,默认为./dist )。 |
assets |
每当编译步骤开始时,启用主动散发非 TypeScript 资源(在增量编译模式下不会产生 资源 --watch 散发)。详情请参阅下文。 |
watchAssets |
如果 true ,则以监督模式运行,监督 所有 非 TypeScript 资源。 |
manualRestart |
如果,则启用手动重新启动服务器的 true 快捷方式。rs 默认值为false 。 |
builder |
批示 CLI 应用什么 builder 来编译我的项目(tsc 、swc 或 webpack )。要自定义构建器的行为,您能够传递蕴含两个属性的对象:type (tsc 、swc 或webpack ) 和options 。 |
typeCheck |
如果 true ,则启用 SWC 驱动我的项目的类型查看(当builder 为时swc )。默认值为false 。 |
全局生成选项
这些属性指定命令应用的默认生成选项nest generate
。
名称 | 形容 |
---|---|
spec |
如果值为布尔值,则默认状况下 true 启用 spec 生成,值为 则 false 禁用生成。CLI 命令行上传递的标记会笼罩此设置,我的项目特定的 generateOptions 设置也会笼罩此设置(更多内容见下文)。如果该值是一个对象,则每个键代表一个原理图名称,并且布尔值确定是否为该特定原理图启用 / 禁用默认标准生成。 |
flat |
如果为 true,则所有生成命令都将生成立体构造 |
本系列文章会继续更新哦,关注前端南玖,敬请期待吧~