以前开发小程序api使用过Express.js、Koa.js等框架,最近想用NestJS重构自己的几个小程序后台,所以从零开始学习NestJS框架。
目前Node.js 最受欢迎的框架通常指的是那些为了简化 Node.js 应用程序开发而创建的库或工具。以下是一些最受欢迎的框架:
下面我们主要介绍下NestJS
一、架构设计
1.模块化架构
2.面向对象编程(OOP)风格
二、功能特性
1.支持多种后端技术
2.内置的功能模块
3.支持微服务架构
三、开发效率
1.代码生成器
nest generate module user
命令来生成一个用户模块,包括控制器、服务和实体等文件。2.良好的文档和社区支持
3.与前端框架集成方便
四、性能和可扩展性
1.高性能
2.可扩展性
npm i -g @nestjs/cli // 全局安装Nest
nest new project-name // 创建项目
我们选择yarn 初始化项目
本地环境yarn 1.22.22、node 21.7.2
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
@Get()
getHello(): string {
return 'Hello World!';
}
}
yarn start
app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
main.ts
declare const module: any;
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3001);
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => app.close());
}
}
bootstrap();
@nestjs/cli
******)**ts-node-dev
ts-node-dev
:npm install -D ts-node-dev
在 `package.json` 文件中,将启动脚本修改为使用 `ts-node-dev`。
"scripts": { "start": "ts-node-dev --respawn --transpile-only src/main.ts" }
yarn add webpack-node-externals run-script-webpack-plugin webpack
"start:dev": "webpack --config webpack.config.js --watch",
webpack.config.js
const webpack = require('webpack');
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const { RunScriptWebpackPlugin } = require('run-script-webpack-plugin');
module.exports = {
entry: ['webpack/hot/poll?100', './src/main.ts'],
target: 'node',
externals: [
nodeExternals({
allowlist: ['webpack/hot/poll?100'],
}),
],
module: {
rules: [
{
test: /.tsx?$/,
use: 'ts-loader',
exclude: /node\_modules/,
},
],
},
mode: 'development',
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new RunScriptWebpackPlugin({ name: 'server.js' }),
],
output: {
path: path.join(\_\_dirname, 'dist'),
filename: 'server.js',
},
};webpack.config.js
在项目根目录下运行以下命令启动开发服务器:
nest start --watch
这个命令会启动一个开发服务器,并监视文件的变化。当文件发生变化时,服务器会自动重新加载。
这些方法可以帮助你在开发过程中实现热更新,提高开发效率。根据你的项目需求和偏好选择适合的方法。
开始写这篇文章的时候,我已经把自己的小程序后台koa项目改造成了NestJS。后续还会写NestJS使用ORM、如何在NestJS中添加日志、jwt token处理、全局错误处理、接口参数校验、redis缓存、图片上传等等
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。