Nestjs

  1. 作为NodeJs里发展势头最猛的web框架
  2. NestJs构建于TypeScript之上,模块化灵感源于Angular
  3. 很多思想借鉴自Java的Spring,有兴趣的Java小伙伴也可以关注一下。官网: https://nestjs.com/,中文文档:https://docs.nestjs.cn

第一步

在这一组文章中, 您将了解 Nest 的核心基础知识。为了了解基本的 nest 应用程序构建模块,我们将构建一个基本的 CRUD 应用程序, 其中的涵盖了大量的基础功能。

语言

我们爱上了 TypeScript,但最重要的是,我们喜欢 Node.js。 这就是为什么 Nest 兼容 TypeScript 和纯 JavaScript。 Nest 正利用最新的语言功能,所以要使用原生的 JavaScript 框架,我们需要一个 Babel 编译器。

在文章中,我们主要使用 TypeScript ,但是当它包含一些 Typescript 特定的表达式时,您总是可以将代码片段切换到 JavaScript 版本。

【译者注:由于 nest.js 对 ts 特性支持更好,中文文档只翻译 Typescript】

先决条件

请确保您的操作系统上安装了 Node.js(> = >= 10.13.0)

一分钟安装 node.js (支持X86 ARM MIPS 等架构,需要版本管理或者系统为 Raspbian 请直接看 NVM)

windows

  1. 点击下载 Node.js
  1. 安装Node.js

Powershell/CMD 可以打印出这个说明安装成功。(部分系统需要重启后环境变量才生效)

$node -v
v12.10.0
$ npm -v
6.10.3Copy to clipboardErrorCopied

就是这么简单! 不需要安装拓展,不需要额外安装 nginx/apache

建立

使用 Nest CLI 建立新项目非常简单。 只要确保你已经安装了 npm,然后在你的 OS 终端中使用以下命令:

npm

$ npm i -g @nestjs/cli
$ nest new project-nameCopy to clipboardErrorCopied

yarn

将创建 project 目录, 安装node模块和一些其他样板文件,并将创建一个 src 目录,目录中包含几个核心文件。

src
├── app.controller.ts
├── app.module.ts
└── main.tsCopy to clipboardErrorCopied

以下是这些核心文件的简要概述:

   
app.controller.ts 带有单个路由的基本控制器示例。
app.module.ts 应用程序的根模块。
main.ts 应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。

main.ts 包含一个异步函数,它负责引导我们的应用程序:

import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';async function bootstrap() {const app = await NestFactory.create(ApplicationModule);await app.listen(3000);
}
bootstrap();Copy to clipboardErrorCopied

要创建一个 Nest 应用实例,我们使用了 NestFactory 核心类。NestFactory 暴露了一些静态方法用于创建应用实例。 create() 方法返回一个实现 INestApplication 接口的对象, 并提供一组可用的方法, 在后面的章节中将对此进行详细描述。 在上面的main.ts示例中,我们只是启动 HTTP 服务器,它允许应用程序等待入站 HTTP 请求。

请注意,使用 Nest CLI 搭建的项目会创建一个初始项目结构,我们鼓励开发人员将每个模块保存在自己的专用目录中。

平台

Nest 旨在成为一个与平台无关的框架。 通过平台,可以创建可重用的逻辑部件,开发人员可以利用这些部件来跨越多种不同类型的应用程序。 从技术上讲,Nest 可以在创建适配器后使用任何 Node HTTP 框架。 有两个支持开箱即用的 HTTP 平台:express 和 fastify。 您可以选择最适合您需求的产品。

   
platform-express Express 是一个众所周知的 node.js 简约 Web 框架。 这是一个经过实战考验,适用于生产的库,拥有大量社区资源。 默认情况下使用 @nestjs/platform-express 包。 许多用户都可以使用 Express ,并且无需采取任何操作即可启用它。
platform-fastify Fastify 是一个高性能,低开销的框架,专注于提供最高的效率和速度。 在这里阅读如何使用它。

无论使用哪种平台,它都会暴露自己的 API。 它们分别是 NestExpressApplication 和 NestFastifyApplication。

将类型传递给 NestFactory.create() 方法时,如下例所示,app 对象将具有专用于该特定平台的方法。 但是,请注意,除非您确实要访问底层平台API,否则无需指定类型。

const app = await NestFactory.create<NestExpressApplication>(ApplicationModule);Copy to clipboardErrorCopied

运行应用程序

安装过程完成后,您可以在系统命令提示符下运行以下命令,以启动应用程序监听入站 HTTP 请求:

$ npm run startCopy to clipboardErrorCopied

此命令在 src 目录中的 main.ts 文件中定义的端口上启动 HTTP 服务器。在应用程序运行时, 打开浏览器并访问 http://localhost:3000/。 你应该看到 Hello world! 信息。

nestjs CRUD相关推荐

  1. 手把手教你用nestjs框架7分钟生成crud风格接口

    Tobenew  ,感谢! node.js mongodbnestjs 1.安装nest.js框架 nest.js官方开发文档 全局安装nest框架 npm i -g @nestjs/cli 2. 新 ...

  2. js 加入debug后可以进入controller_写给前端:让后端 CRUD Boy 失业—— Nest.js CRUD 教程

    前言 沉默了很久,一直都没发文章,有些惭愧. 最近实习结束之后回了学校,提前开始做毕业设计了.对,就是毕业设计. 近两个月把 React Native.Vue 3.0 和 Nest.js 都摸了一下, ...

  3. nestjs+mysql+prisma + swagger项目搭建

    nestjs 学习(一) 项目地址 1. 基础操作 安装nest yarn add -g @nestjs/cli 创建项目 nest new project-name 启动服务器yarn run st ...

  4. 【nestjs+mongodb】- 后端搭建和数据库抽离

    github代码 GitHub仓库地址 需要的可以git clone,喜欢的可以点个star 思路 先补充一些nestjs的前置知识 控制器 控制器负责处理传入的请求和向客户端返回响应. 控制器的目的 ...

  5. NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!

    前言 管道这个词,若是有玩过Linux的小伙伴肯定知晓,比如(看图): 意思就git的提交记录以单行显示的前三条,而且提交概要中有build这个词的~ 在nest里面的管道,主要是用来做入参数据类型的 ...

  6. mybatis CRUD操作

    mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...

  7. iBatis的CRUD操作详细总结

    昨天晚上看了一下关于iBatis的一个讲解的视频,讲的和我的这个简单的总结差不多.... 思考了一下还是把主要操作都总结一下吧,当然这里也不是全的,知识简单的CRUD... 首先我觉得持久层的操作主要 ...

  8. MyBatis基础-CRUD

    一.mybatis  环境搭建步骤 第一步:创建 maven 工程 第二步:导入坐标 第三步:编写必要代码(实体类和持久层接口) 第四步:编写 SqlMapConfig.xml 第五步:编写映射配置文 ...

  9. spring上下文是什么意思_Java程序员只会CRUD连Spring事务传播机制都不懂?

    AQS到底有什么用?难道就真的只是为了面试吗? 当然不是说AQS没用,如果你不是做基础架构或者中间件开发,你很难感受到AQS的威力.当然,学习很多时候,需要的是正向反馈,学了太多造火箭的东西,面试完就 ...

最新文章

  1. 【Mac】解决「无法将 chromedriver 移动到 /usr/bin 目录下」问题
  2. JSP内置对象-out
  3. win32 api setwindowlong 第2个参数_FME与MapBox 01:等时圈(Isochrone)API
  4. linux内核支持utf8,Linux对非UTF-8中文编码的支持
  5. mysql schema table_关于数据库中table与schema的区别详解
  6. [设计模式]开闭原则
  7. MySql的like语句中的通配符:百分号、下划线和escape
  8. Linux/Windows/C++网络开源库项目集合
  9. 使用java实现MD5码算法
  10. 安装IBM HTTP SERVER
  11. 汉字风格迁移篇--基于生成对抗网络的无监督字体风格转换模型
  12. js 实现打以及样式问题
  13. POI导出多个Excel文件,生成压缩文件
  14. 数据清洗与处理第二章
  15. 笔记三:ASP.NET MVC 添加一个新页面,运行显示HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。
  16. a king读后感 love of the_一千零一夜英语读后感
  17. selector.select()和selector.selectedKeys()
  18. 百度还是知乎,这一次你选对了吗?
  19. 使用Trados的点滴经验
  20. 【CVTE2014校园招聘.在线测试】01.数据库密码加密

热门文章

  1. 计算机未来的储存装置,图说计算机存储设备
  2. 计算机基础知识作业答案,计算机基础与应用作业答案ID及计算机基础知识笔试题.doc...
  3. lolfps高但画面不流畅_你吃鸡卡吗,超详细和平精英画面设置教程,解决卡顿,主播都在用...
  4. python绘制折线图中文图例不显示_python使用matplotlib绘图时图例显示问题的解决...
  5. cmd运行python服务器,python如何利用paramiko执行服务器命令
  6. 鸿蒙os即将升级,央视爆料鸿蒙OS即将升级,荣耀智慧屏强大自研开启国货新时代...
  7. java程序不能编译_救命-JAVA程序不能编译!
  8. matlab 两个向量的交集,matlab – 两个向量之间的相关性?
  9. 文巾解题 994. 腐烂的橘子
  10. Java实战应用50篇(一)-Java并发编程:volatile关键字解析