nestJS入门cli 创建项目以及集成swagger和mysql

Node框架之NestJS入门学习 文章主要分为三部分:1 NestJS 与Egg对比2 NestJS 基础知识介绍3 使用NestJS快速搭建应用,实现CURD操作e-link文档Egg官网NestJS 官网NestJS中文文档(非官方) 阅读详情

nestJs

1. 简介

介绍 NestJS NestJS 是一个基于 TypeScript 的渐进式 Node.js 框架,它结合了 OOP、FP 和 FRP 的元素,以提供一种现代且可扩展的开发体验。NestJS 建立在 Express.js 之上,但是提供了更加抽象和模块化的方式来编写应用程序。NestJS 提供了许多关键功能,如依赖注入、面向切面编程、中间件、异常过滤、WebSocket、GraphQL 等。它还内置了支持多种数据库(如 MongoDB、MySQL、PostgreSQL)的 ORM 和 ODM 库,以及对测试的良好支持。

2. NestJS 的核心概念

模块化编程 NestJS 强调模块化编程思想,将各个模块分开以达到解耦的目的。

浅谈控制反转和依赖注入

  • 控制反转(IoC)是一种思想,其中一个典型的实现方式就是使用依赖注入(DI)
  • 什么是控制反转,顾名思义失去控制,反转控制权,主要是为了解耦组件之间的依赖关系,提高代码的可维护性和扩展性。 IoC指的是将控制流程交给框架或容器来管理,而不是在应用程序自己的代码中硬编码实现。这意味着应用程序不再需要自己创建和管理对象的生命周期,而是由框架或容器来负责。
  • 什么是依赖注入,DI指的是通过构造函数、属性或方法参数等方式,在组件创建时向其传递依赖的对象,也就是将组件所依赖的对象“注入”到组件中。这样组件就不需要自己创建和管理依赖的对象了,而是由其他组件或框架来负责创建和管理。这样可以降低组件之间的耦合度,同时也方便了单元测试和代码重用。

控制器和路由 控制器负责处理接收到的请求,并返回响应。路由是控制器的一部分,负责将请求映射到相应的控制器方法。

提供程序和依赖注入 提供程序是一个类或者值,可以被注入到控制器或其他提供程序中。依赖注入是指这些提供程序在运行时被动态注入到控制器或其他提供程序中。

中间件和异常处理 中间件是在请求和响应之间的操作,例如身份验证、日志记录等。异常处理是在捕获异常后处理异常的过程。

WebSocket 和 GraphQL NestJS 对 Websocket 和 GraphQL 也有丰富的支持,它们都可以通过 NestJS 的装饰器和模块来实现。

3. NestJS 开发基础

NestJS中文文档

npm i -g @nestjs/cli  // 全局安装Nest
nest new demo  // 创建项目

安装和配置 使用 npm 或者 yarn 可以安装 NestJS,并根据需要进行配置。

模块和模块之间的关系 NestJS 强调模块化编程思想,因此所有的功能都必须在模块内定义。

路由和控制器 路由是负责将请求映射到相应的控制器方法,而控制器则负责处理接收到的请求,并返回响应。 Nest.js中没有单独配置路由的地方,而是使用装饰器。Nest.js中定义了若干的装饰器用于处理路由。

提供程序和依赖注入 提供程序是一个类或者值,可以被注入到控制器或其他提供程序中。依赖注入是指这些提供程序在运行时被动态注入到控制器或其他提供程序中。

nestJS CLI 常用命令

# 生成controller.ts
 $nest g co user
# 生成  module.ts
 $nest g mo user
# 生成service.ts
 $nest g s user
# 直接使用一个命令生成CURD
 $nest g resource user

在这里插入图片描述

4. NestJS 进阶开发

中间件的使用和自定义中间件 NestJS 内置了一些常用的中间件,例如 CORS、Body Parser 等,同时也支持自定义中间件。

异常处理和自定义异常 异常处理是在捕获异常后处理异常的过程。NestJS 内置了一些常见的异常类,也支持自定义异常。

WebSocket 的使用和实现 NestJS 可以很方便地支持 WebSocket,只需要使用相应的装饰器和模块即可。

GraphQL 和 RESTful API 的比较以及如何实现 GraphQL NestJS 对 GraphQL 有着良好的支持,可以使用它来替代传统的 RESTful API。

集成swagger

  • 安装swagger
yarn add @nestjs/swagger swagger-ui-express --save
import { NestFactory } from '@nestjs/core';
import { ParseIntPipe } from '@nestjs/common';
import { AppModule } from './app.module';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  //全局使用管道:这里使用的是内置,也可以使用自定义管道,在下文
  app.useGlobalPipes(new ParseIntPipe());
  app.setGlobalPrefix('api');
  //全局使用中间件
  // app.use(LoggerMiddleware);

  // //全局使用过滤器
  // //这里使用的是自定义过滤器,先别管,先学会怎么在全局使用
  // app.useGlobalFilters(new HttpExceptionFilter());

  // //全局使用守卫
  // app.useGlobalGuards(new AuthGuard());

  // //全局使用拦截器
  // app.useGlobalInterceptors(new AuthInterceptor());
  const config = new DocumentBuilder()
    .setTitle('demo')
    .setDescription('nestJs项目的API使用文档')
    .setVersion('1.0.0')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('/api', app, document);
  await app.listen(4010);
}
bootstrap();

集成TypeORM和MySql

为了开始使用它,我们首先安装所需的依赖项。在本章中,我们将演示如何使用流行的关系型数据库 Mysql , TypeORM 提供了对许多关系数据库的支持,比如 PostgreSQL 、Oracle、Microsoft SQL Server、SQLite,甚至像 MongoDB 这样的 NoSQL 数据库。

为了与 SQL和 NoSQL 数据库集成,Nest 提供了 @nestjs/typeorm 包。Nest 使用TypeORM是因为它是 TypeScript 中最成熟的对象关系映射器( ORM )。因为它是用 TypeScript 编写的,所以可以很好地与 Nest 框架集成。

  • 安装mysql以及navicat

  • 安装TypeORM

yarn add --save @nestjs/typeorm typeorm mysql2

官方提供了两种连接数据库的方法:

方法1

首先在项目根目录下创建两个文件.env和.env.prod,分别存的是开发环境和线上环境不同的环境变量:(.env.prod中的是上线要用的数据库信息,如果你的项目要上传到线上管理,为了安全性考虑,建议这个文件添加到.gitignore中)

// 数据库地址
DB_HOST=localhost  
// 数据库端口
DB_PORT=3306
// 数据库登录名
DB_USER=root
// 数据库登录密码
DB_PASSWD=root
// 数据库名字
DB_DATABASE=test

接着在根目录下创建一个文件夹config(与src同级),然后再创建一个env.ts用于根据不同环境读取相应的配置文件。


import * as fs from 'fs';
import * as path from 'path';
const isProd = process.env.NODE_ENV === 'production';
 
function parseEnv() {
  const localEnv = path.resolve('.env');
  const prodEnv = path.resolve('.env.prod');
 
  if (!fs.existsSync(localEnv) && !fs.existsSync(prodEnv)) {
    throw new Error('缺少环境配置文件');
  }
 
  const filePath = isProd && fs.existsSync(prodEnv) ? prodEnv : localEnv;
  return { path:filePath };
}
  • app.module.ts
import { Module } from '@nestjs/common';
import { UsersModule } from './users/users.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigService, ConfigModule } from '@nestjs/config';
import envConfig from './config/env';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // 设置为全局
      envFilePath: [envConfig.path],
    }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: async (configService: ConfigService) => ({
        type: 'mysql', // 数据库类型
        entities: [], // 数据表实体
        host: configService.get('DB_HOST', 'localhost'), // 主机,默认为localhost
        port: configService.get<number>('DB_PORT', 3306), // 端口号
        username: configService.get('DB_USER', 'root'), // 用户名
        password: configService.get('DB_PASSWORD', 'root'), // 密码
        database: configService.get('DB_DATABASE', 'test'), //数据库名
        timezone: '+08:00', //服务器上配置的时区
        synchronize: true, //根据实体自动创建数据库表, 生产环境建议关闭
      }),
    }),
    UsersModule,
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}

警告:设置 synchronize: true 不能被用于生产环境,否则您可能会丢失生产环境数据

方法二
  • app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: ['dist/**/*.entity{.ts,.js}'],
      synchronize: false,
      autoLoadEntities: true,
    }),
  ],
})
export class AppModule {}

在这里插入图片描述

2024 Nestjs入门到实战 文章目录前提-安装环境介绍 (了解即可)安装nestjs, 创建新项目, 启动新项目nestcli命令 (建议熟练掌握, 可提高开发效率)IoC(控制反转)和DI(依赖注入)概念详解IoC(控制反转)DI(依赖注入)两种思想的概念示例代码总结在nestjs中的三种依赖注入方式为什么 Controller 是单独的装饰器?@Module机制装饰器概念四种装饰器在ts中自定义装饰器类装饰器属性装饰器方法装饰器参数装饰器示例代码nestjs控制器和参数获取nest-provider基本用法Provider自定义名 阅读详情

相关推荐

NestJS 技术解析及实战指南

NestJS 是基于 Node.js 的渐进式服务端框架,使用 TypeScript 构建,融合了面向对象编程(OOP)、函数式编程(FP)和响应式编程(RP)理念。其核心设计借鉴了 Angular 的模块化思想,底层默认集成 Express(可切换为 Fastify),提供开箱即用的依赖注入、中间件管道、拦截器等企业级功能。​​核心特性示例:​​// 典型的模块定义@Module({imports: [DatabaseModule], // 依赖模块。

程序员学习园地。 1004

nestjs 使用swagger 搭建接口文档

NestJS入门swagger,快速搭建restfulApi文档 2020-01-11•admin•NestJS入门swagger,快速搭建restfulApi文档已关闭评论条评论•550 次浏览 swagger *由于最近新版@nestjs/swagger4.*的更新,使用的注解也发生了一些改动,具体可以查看 @nestjs/swagger官方地址 swagger:一...

gwdgwd123的博客 1万+

小满nestjs(第二十七章 实战:从零构建一个带分页与搜索的NestJS CRUD后台)

本文详细介绍了如何从零构建一个带分页与搜索功能的NestJS CRUD后台系统。通过TypeORM处理数据库操作,结合class-validator实现数据校验,并演示了分页查询、模糊搜索等核心功能的实现方法,帮助开发者快速掌握NestJS的企业级应用开发技巧。

weixin_27697385的博客 390

在NestJs上配置Swagger

Swaager是生成开发API文档的一大利器,当我们在给别人做KT的时候,一个Swagger文档丢给人家,真的是你好我也好。在日常开发中,前端看Swagger文档也可以避免很多沟通上的非必要问题。

胡世林的博客 1758

Scramble集成测试:用CI/CD流水线实现API文档与代码的强制同步

在软件开发中,API文档与代码的同步问题是一个普遍存在的技术痛点,常导致团队协作效率低下。其核心在于缺乏一个自动化的强制反馈机制。通过引入‘测试驱动文档’的理念,可以将集成测试作为API的‘契约’,明确其请求与响应的数据结构。这一实践的技术价值在于,它将文档更新从依赖开发者自觉的‘道德义务’,转变为由持续集成(CI)流程保障的‘物理限制’。具体实现时,在CI流水线中,每次代码变更都会触发测试运行,并基于最新代码自动生成API文档(如OpenAPI规范),然后与基线版本进行差异对比。任何不匹配都会导致构建失败

weixin_34321753的博客 473

AI Agent 原生 IDE:从编辑器范式到开发智能体的架构跃迁

IDE(集成开发环境)已从语法高亮与调试工具,演进为具备意图理解与自主执行能力的AI Agent平台。其核心原理在于将大语言模型、工具调用、沙箱执行与项目知识图谱深度耦合,突破传统LSP+插件架构的静态能力边界。技术价值体现在显著压缩‘人机协同链路’——减少提示词编写、人工校验、格式转换等机械性耗时,提升中高级工程师在诊断、重构、迁移等复杂任务中的交付确定性。典型应用场景包括SSR问题自动归因、Webpack到Vite的零配置升级、Vue2→Vue3结构化迁移规划,以及金融级离线审计合规开发。本文聚焦MIT

weixin_33739627的博客 336

NestJS学习记录-TypeOrm

它的目标是始终支持最新的 JavaScript 特性并提供额外的特性以帮助你开发任何使用数据库的(不管是只有几张表的小型应用还是拥有多数据库的大型企业应用)应用程序。上面动态模块引入时,logging:true,可以打开,打开以后我们执行sql,在我们控制台就可以看到执行的sql语句。4、此时我们在user.entity.ts文件中加入一些字段,注意这个就是我们的实体类,对应数据库中的表。可以看到我们只获取到id==2的用户,因为我们获取所有用户的时候过滤掉了已经删除的用户。

weixin_39179366的博客 1385

DeepSeek V4双版本工程实践:Flash与Pro如何协同提升开发效能

大模型在软件工程中的落地,核心在于任务粒度与响应确定性的精准匹配。DeepSeek V4通过Flash(毫秒级确定性响应)和Pro(多阶段领域求解)双版本架构,将AI能力从通用推理升级为可嵌入研发流程的工程组件。其技术价值体现在对国内技术栈、行业规范(如等保、医保电子凭证、ICD-10)、团队约定(如Java命名规范、DDD分层)的深度建模,而非单纯参数规模。典型应用场景覆盖电商后台模块生成、金融风控规则编排、医疗问答三重校验链路等生产级需求;尤其在weelinking平台加持下,实现网络直连优化、国产化合

weixin_30938149的博客 308

【2026前端转 AI 全栈指南】第 2 章(下):NestJS 项目创建 · MongoDB 配置 · 项目启动与调试

NestJS概念作用类比前端Module功能模块边界功能文件夹Controller处理 HTTP 路由路由 handlerService业务逻辑依赖注入 DI自动组装依赖不用自己new实例为什么选择 NestJS?什么是 MongoDB?开源文档型 NoSQL 数据库,数据以 BSON/JSON 文档存储,适合简历这种结构灵活的业务。为什么选择 MongoDB?(本教程)简历 JSON 字段随模板变化,文档库比固定表结构省事与 NestJS 通过Mongoose集成成熟。

qq_48032163的博客 486

AI Coding Agent实战指南:从代码生成器到软件工程师代理

AI Coding Agent并非简单的智能代码补全,而是具备任务分解、工具调用与自我修正能力的目标驱动型推理引擎。其核心原理在于将传统编程工作流解耦为记忆、规划、工具与执行四层架构,通过结构化配置替代模糊Prompt,实现可验证、可监控、可审计的自动化开发。相比通用大模型端到端生成,轻量模型+RAG+专用工具链的组合显著提升代码可运行率、合规性与安全性,已在电商、医疗、IoT等真实场景中支撑CRUD开发、CI/CD配置、端到端测试等高频任务。本文聚焦工程落地路径,涵盖Ollama本地部署、YAML驱动的行

weixin_30482383的博客 432

卡方检验的隐藏逻辑:为什么正态分布的平方和如此重要?

本文深入探讨了卡方检验的核心逻辑,揭示了正态分布平方和在统计检验中的重要性。通过分析卡方分布与伽马分布的关系,以及实际应用案例,帮助读者理解卡方检验的原理、局限及高级应用场景,为数据分析提供有力工具。

3a9bq4r8t2y的博客 208

为什么选择NestJS?

无论是小型 API 还是大型企业级系统,NestJS 都能以较低的复杂度应对,是现代 Node.js 后端开发的优选框架之一。的核心原因在于它解决了传统 Node.js 开发中常见的痛点(如代码组织混乱、可维护性差、重复造轮子),同时通过现代化设计和丰富生态,为构建高效、可扩展的后端应用提供了“开箱即用”的解决方案。这种分层彻底分离了“请求处理”和“业务实现”,避免了 Express/Koa 中常见的“控制器塞满逻辑”问题,代码可读性和可维护性大幅提升,尤其适合团队协作和长期迭代。NestJS 提供大量。

软件行业技术文化交流。 1391

4090显卡实测:PointPillars在KITTI数据集上的3D目标检测复现全流程(附避坑指南)

本文详细记录了在NVIDIA RTX 4090显卡上,从环境搭建、数据处理到模型训练与评估,完整复现PointPillars算法在KITTI数据集上进行3D目标检测的全流程。重点分享了版本配置、数据预处理、性能调优及常见问题的避坑指南,帮助开发者高效利用硬件资源,成功跑通并理解这一经典3D检测项目。

purple的博客 914

NestJS 配置整合指南

本文档汇总了React Admin NestJS项目的核心配置,涵盖基础设置、数据库、缓存、日志、安全等模块。基础配置包括端口、环境变量等;数据库支持PostgreSQL/MySQL和MongoDB;缓存使用Redis并包含连接池优化;日志采用高性能Pino;安全配置含JWT认证。各模块均提供配置文件位置、类型定义、环境变量示例及使用说明,支持开发、测试、生产多环境部署,并移除了过时的MongoDB连接选项。

gxy03的博客 899

面试中常考的数学题——截木棍、圆上取点、赛马、红蓝墨水,测试毒药、坐到正确座位问题

文章目录1.将一根木棒截成三段,问能够组成三角形的概率;2.在圆上任取三点,问能够组成锐角、直角、钝角三角形的概率;3.共有25匹马,找出最快的3匹,只有5个赛道,每次比赛只能得到5匹马的速度排序,最少需要多少次比赛;4 有两瓶红蓝墨水,体积一样,现在从红墨水中舀一勺加入蓝墨水中,搅拌均匀后,在从蓝墨水中舀一勺加到红墨水中,试问这两瓶墨水哪瓶纯度更高。 1.将一根木棒截成三段,问能够组成三角形的概率; 来源:https://blog.youkuaiyun.com/weixin_41245919/article/deta

weixin_41558411的博客 4904

AI漫剧制作全流程零基础实操指南:从剧本到剪辑

AI漫剧是一种利用AI工具将剧本、分镜、出图、配音、剪辑整合为流水线的短视频内容形式。其技术原理基于文生图、图生图与文本转语音模型的组合,核心挑战在于角色一致性控制与分镜批量出图。这项技术大幅降低了视频制作门槛,使个人创作者无需演员和设备即可产出剧情向短内容,广泛应用于短视频平台的情景剧、玄幻、甜宠等题材。本文给出了一套零基础可照做的全流程实操方案,覆盖剧本提示词、分镜表、出图选型、配音合成与剪辑模板,帮助你快速跑通AI漫剧制作链路。

weixin_29048309的博客 522

终极NestJS Prisma Starter教程:从零构建全栈GraphQL应用

NestJS Prisma Starter是一个功能强大的全栈开发模板,集成了NestJS框架与Prisma ORM,提供GraphQL接口、JWT认证、Swagger文档和Docker部署支持,帮助开发者快速搭建企业级Node.js应用。 ## 为什么选择NestJS Prisma Starter? 这款开源模板专为现代后端开发设计,融合了多项行业最佳实践: - **完整技术栈**:基于N

gitblog_00848的博客 560

apm软件仿真+QGC地面站 环境搭建

本教程使用场景:apm软件仿真运行于虚拟机 ubuntu环境。qgc地面站位于windows 系统。两个环境在同一台电脑上。 一.apm仿真环境搭建 1.安装vm虚拟机及ubuntu 18。 2.ubuntu下 下载Ardupilot 飞控源码 并配置环境。 下载源码: git clone https://github.com/ArduPilot/ardupilot cd ardupilot git submodule update --init --recursive 配置所需运行的环境:

qthello 6110

nest.js入门

nest.js是一个高效,可扩展的node.js服务器端web框架,node.js提供了一个灵活的运行时环境,而nest.js提供了更高层次的组织架构。特点:支持原生typescript的框架;可以基于express也可以选择fastify(快,更高效),也可以用express直接访问其api。 (转载+理解补充)

qq_66281352的博客 1097

当windows安装git时出现以下错误提示

Windows安装Git时出现多个系统配置设置失败错误(exit code 4294967295),提示包括无法设置textconv、LFS过滤器和SSL等配置项。关键问题在于scalar.exe版本不兼容,系统提示"该版本的scalar.exe与你运行的Windows版本不兼容"。解决方案是检查程序版本是否正确,下载与Windows系统兼容的正确版本重新安装即可。

沧澜的博客 1875

灰质-白质组织对比(Gray-white matter tissue contrast,GWC)计算以及可视化

GWC是深层灰质与浅表白质(superficial white matter,SWM)之间T1加权信号强度的比值,已知髓鞘中的胆固醇是T1加权信号强度的主要影响因素,因此GWC大致反映了大脑皮层和浅表白质之间的髓鞘化差异。GWC代表灰白质交界处的模糊程度,较低的GWC表明灰质和白质交界处更相似和更模糊;较高的GWC表明灰白质分界更加清楚。据之前的研究报道,局灶性皮质发育不良、颞叶癫痫、帕金森病、强迫症、精神分裂症和自闭症谱系障碍中存在灰白质交界区GWC异常增高或降低。 灰质信号强度和白质信号强度采集的示意图

xxx 732

创建node项目(nest.js+prisma+ts)到 完整项目(持续更新中...)

创建node项目(nest.js+prisma+ts)到 完整项目

射手男很懒的博客 620

Win7 x64位系统下几乎完美使用安装RTX3050 6G显卡驱动详细教程

RTX3050 6G显卡驱动安装指南:由于该显卡发布时间晚于驱动,需手动修改安装文件。首先在NVIDIA官网下载驱动并解压,通过设备管理器获取硬件ID(PCI\VEN_10DE&DEV_2584),然后在解压目录的.inf文件中添加对应的设备标识。安装完成后可能出现设备管理器感叹号问题,推荐通过命令提示符启用测试模式(bcdedit /set testsigning on)解决,此方法无需每次启动按F8,但会显示测试模式水印。文中提供了详细的图文操作步骤和两种解决方案。

m0_67194883的博客 2888

Ever® Traduora开发者指南:深入了解平台架构与扩展开发

Ever® Traduora™ 是一款功能强大的开源翻译管理平台,专为开发者和翻译团队设计,提供高效的国际化工作流解决方案。本指南将带您深入了解平台的架构设计与扩展开发方法,帮助您快速掌握二次开发技能。 ## 平台整体架构概览 Traduora采用现代化的前后端分离架构,基于Node.js和Angular构建,通过模块化设计实现高内聚低耦合的系统结构。 [![Traduora平台架构概览](

gitblog_00711的博客 357

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

前端学习规划

HTML5:CSS3:JavaScript:渲染机制:事件循环:安全机制:存储方案:HTTP/HTTPS:WebSocket:WebRTC:打包工具:任务管理:代码质量:自动化:部署策略:监控体系:加载优化:运行时优化:渲染优化:React:Vue:Angular:移动端:桌面端:小程序:数据流模式:异步处理:持久化:Node.js基础能力:数据库:API设计:BFF层(Backend For Frontend)聚合层:性能优化:安全控制:函数计算:边缘计算:Web与原生通信:原生功能调用:Hybrid A

zxz86的博客 922

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java与PHP技术选型:从工程成本与团队基因出发的现代决策指南

在Web开发领域,技术选型是项目成功的关键决策之一。其核心原理在于评估不同技术栈在开发效率、维护成本与系统扩展性之间的平衡。从技术价值看,一个合适的选型能显著降低长期工程成本并提升团队产出。常见的应用场景包括构建高并发企业级应用、快速迭代的Web产品以及需要深度集成中间件的复杂系统。本文聚焦于Java和PHP这两种经典语言,通过对比其生态演变、工程实践和成本模型,深入探讨了如何基于团队能力与业务场景进行理性选择,其中Spring Boot和Laravel作为各自生态的代表框架,展现了现代工程化开发的最佳实践

weixin_33937913的博客 632

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 前端性能优化实战
下一篇: 快速实现简体繁体中文切换
MaxLoongLvs
博客等级 码龄9年 226粉丝 170原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaxLoongLvs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值