【Nestjs学习日记】初识nestjs

初识nestjs

NestJS是一个基于Node.js的渐进式框架,用于构建高效、可扩展的服务器端应用程序。它结合了现代化的JavaScript(或TypeScript)语言特性和面向对象的编程概念,提供了一种优雅而强大的开发方式。

NestJS采用了模块化的架构,使开发者能够轻松地组织代码和功能。它内置了强大的依赖注入(Dependency Injection)系统,简化了组件之间的耦合关系,提供了更好的可测试性和可维护性。

通过使用NestJS,开发者可以快速构建可伸缩的应用程序,支持各种功能,如路由管理、中间件、异常处理、认证和授权等。它还提供了与各种数据库和其他第三方库的无缝集成,方便开发者使用他们熟悉的工具和技术栈。

在这个【NestJS学习日记】系列中,我们将一起探索NestJS框架的各个方面,从基本概念到高级用法,逐步深入学习和实践。让我们一起开始这个令人兴奋的旅程,掌握NestJS的技能,构建出更加可靠、可扩展的应用程序!

作者:markzzw 时间:2024-1-29

线上代码:CodeSandbox

Github:zhangzewei/nest-learning-tutorial

工具

node环境

需要下载node的环境,请自行搜索 mac,windows,linux 的安装方法。

编写工具

  1. vscode,常规的js编辑器,可以编辑js文件和直接在命令行运行脚本命令
  2. 线上编写器,这里推荐使用CodeSandbox

API访问工具

推荐使用postman,免费并且网上教程很多的一个工具。

安装 nestjs

css 复制代码
npm i -g @nestjs/cli

创建第一个nestjs项目

arduino 复制代码
nest new project-name

目录结构

scss 复制代码
-----src
    |--app.controller.spec.ts // 单元测试文件
    |--app.controller.ts // 模块路由控制文件
    |--app.module.ts // 模块配置文件
    |--app.service.ts // 模块数据处理文件
    |--main.ts // 主文件,启动文件

main.ts

js 复制代码
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

// 启动函数
async function bootstrap() {
  const app = await NestFactory.create(AppModule); // 创建服务
  await app.listen(3000);
}
bootstrap(); //  运行启动函数

必要的运行命令

package.json

json 复制代码
{
    "scripts": {
        "build": "nest build", // npm run build 构建打包
        "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", // npm run format 格式化代码
        "start": "nest start", // npm run start 运行 nest 服务 只构建一次
        "start:dev": "nest start --watch", // npm run start 运行 nest 服务 启用监听模式 更改文件重新构建
        "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", // 检测代码是否合规
        "test": "jest", // 运行单元测试
        "test:watch": "jest --watch", // 运行单元测试 启用监听模式 更改之后重新运行单元测试
        "test:cov": "jest --coverage", // 运行单元测试 并输出单元测试覆盖率报告
    },
}

在学习阶段建议运行 npm run start:dev 这样子方便进行更改后的查看。

运行启动

arduino 复制代码
npm run start:dev

随后打开浏览器查看 localhost:3000,或者在postman中输入 localhost:3000,就能查看到初始样例代码返回的 hello world 字样。

相关推荐
TU不秃头24 分钟前
JS逆向实战五:某海关公示平台分析(瑞数加密)
javascript·爬虫
anOnion3 小时前
构建无障碍组件之Carousel Pattern
前端·html·交互设计
ssshooter3 小时前
Tauri 2 iOS 开发避坑指南:文件保存、Dialog 和 Documents 目录的那些坑
前端·后端·ios
Можно4 小时前
深入理解 ES6 Proxy:与 Object.defineProperty 的全面对比
前端·javascript·vue.js
Birdy_x4 小时前
接口自动化项目实战(1):requests请求封装
开发语言·前端·python
天天向上10246 小时前
vue el-table实现拖拽排序
前端·javascript·vue.js
西西学代码6 小时前
Flutter---回调函数
开发语言·javascript·flutter
卷帘依旧6 小时前
JavaScript 闭包经典问题:为什么输出 10 次 i=10
javascript
柳杉6 小时前
Three.js × Blender:从建模到 Web 3D 的完整工作流深度解析
前端·javascript·数据可视化
reembarkation7 小时前
vue3中使用howler播放音频列表
前端·vue.js·音视频