从零搭建Node.js服务器端项目(NestJs)

一、介绍 😜 😜

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。 在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify ! Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。(这一段来自NestJs官网)

二、全局安装CLI 😃 😃

环境要求,Node.js (>= 10.13.0,v13 除外)。全局安装完nestjs以后我们就可以通过nest --version去查看当前版本号了,我的是9.3.0。

# 这个官网就有
$ npm i -g @nestjs/cli
$ nest new project-name

初始化项目的话非常的简单,只有一步让我们选择构建工具,根据自己的情况选择就好,我习惯了yarn。所以我选择的是yarn。

安装成功以后进入项目直接启动,它默认监听的端口是3000,配置的话在main.ts中,可以自行修改。

1、启动项目 👇 👇 👇

通过下面的命令启动项目以后,浏览器直接访问http://localhost:3000/

yarn start:dev

三、如何添加自定义路由 😁 😁

大家都知道如果使用Express框架或者Koa框架的话,我们需要自己去完成路由的中间件部分。但是NestJs不需要,这个就是为什么选择它的原因,当然这只是选择它的原因之一中的之一。它的结构就和我们java中的ssm框架ssh框架一样。我们不需要去配置那些繁琐的中间件代码,直接通过controller的方式即可。如下:

1、修改src/app.controller.ts文件 👇 👇 👇

增加一个路由,此时浏览器直接http://localhost:3000/admin访问即可,是不是超级方便。当然这里只是一个demo,实际开发中我们肯定要根据模块去划分文件去编写相应的代码,不能全都写在app.controller.ts中,既不合理又不规范。并且它也是官方给我们的一个demo,后续用不到话可以直接删掉。

@Get('/admin')
getAdmin(): string {
  return 'Hello 我是admin页面';
}

2、删掉官方给的demo文件 👇 👇 👇

src下只保留main.ts和app.module.ts。看自己情况,可删可不删。

四、创建模块 😊 😊

这里的话我们推荐使用官方cli去创建模块,因为它会自动创建文件夹和对应的文件,以及自动引入。非常的方便。

nest g module user

如果出现以下错误,是因为在此系统上禁止运行脚本。

在管理员终端执行以下命令,记住是管理员终端,输入命令后再输入Y回车即可。

set-ExecutionPolicy RemoteSigned
# 接着输入Y

执行完成以后接着执行我们之前的创建命令

接着使用同样的方法去创建controller和service文件

# controller
nest g controller user --no-spec

#service
nest g service user --no-spec

五、编写一个demo 😛 😛

controller和service是什么关系,和java一样,controller简单的理解就是请求层,service就是我们的逻辑层。所以我们的逻辑代码尽量的在service层中去做处理,毕竟规范一点。下面我们实现一个获取用户信息的demo。

1、service层 👇 👇 👇

import { Injectable } from '@nestjs/common';

@Injectable()
export class UserService {
  getUserInfo(): string {
    return 'Hello 成功获取到用户信息';
  }
}

2、controller层 👇 👇 👇

import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';

@Controller('user')
export class UserController {
  constructor(private userService: UserService) {}
  @Get()
  getUserInfo(): string {
    return this.userService.getUserInfo();
  }
}

3、全局配置api路径 👇 👇 👇

根据我们平时工作中的习惯,我们接口一般前面都带有****/api/***这样。修改main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setGlobalPrefix('api/');
  await app.listen(3000);
}
bootstrap();

4、访问http://localhost:3000/api/user

六、开发工具 😁 😁

我使用的是WebStrom2023.1版本,下面给个演示图。强大的代码提示和自动补全,以及保存以后自动格式化代码。我个人是习惯了使用WebStrom,看自己习惯,工具里面简单配置一下就好了。

配置保存自动格式化。

七、热更新配置 😍 😍

为啥要做热更新配置,因为目前我们的代码是修改以后保存就会重新启动整个项目。现在没什么东西还好,没什么感觉,随着我们代码的庞大,启动就会产生一些不太友好的体验了。所以我们需要配置热更新,解决这个问题。

1、安装依赖 👇 👇 👇

# 也可以通过

yarn add webpack-node-externals run-script-webpack-plugin webpack -D

2、根据官方文档在根目录创建webpack-hmr.config.js文件 👇 👇 👇

文件创建完成以后将官网的配置复制粘贴进去

const webpack = require('webpack');
const nodeExternals = require('webpack-node-externals');
const StartServerPlugin = require('start-server-webpack-plugin');

module.exports = function(options) {
  return {
    ...options,
    entry: ['webpack/hot/poll?100', options.entry],
    watch: true,
    externals: [
      nodeExternals({
        allowlist: ['webpack/hot/poll?100'],
      }),
    ],
    plugins: [
      ...options.plugins,
      new webpack.HotModuleReplacementPlugin(),
      new webpack.WatchIgnorePlugin([/\.js$/, /\.d\.ts$/]),
      new StartServerPlugin({ name: options.output.filename }),
    ],
  };
};

3、配置 👇 👇 👇

修改main.ts文件,因为这里会有类型错误,我们需要安装一下webpack的类型

yarn add @types/webpack-env -D
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setGlobalPrefix('api/');
  await app.listen(3000);

  if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => app.close());
  }
}
bootstrap();

4、使用 👇 👇 👇

根据官方提供的参考信息,我们需要修改启动方式,修改package.json,修改完成以后直接启动start:dev即可。

随便修改一个文件以后会发现已经生效了。

好了,到这里我们的NestJS项目基本就配置完成了,后续就开始连接数据库实际开发项目了。

我是Etc.End。如果文章对你有所帮助,能否帮我点个免费的赞和收藏😍。

👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在node.js服务器上部署Vue项目,可以按照以下步骤进行操作: 1. 首先,确保你的服务器上已经安装Node.js和npm。 2. 在服务器上创建一个文件夹(例如,项目文件夹),将你的Vue项目的dist目录上传到该文件夹中。 3. 在终端中切换到该项目文件夹的路径下,然后运行```npm install```命令,以安装项目所需的依赖包。这将根据项目中的package.json文件自动安装所有依赖项。 4. 创建一个名为server.js的文件,并在其中编写以下代码来配置Node.js服务器: ``` // 引入express const express = require('express'); // 调用express,创建一个app服务实例对象 const app = express(); // 指定静态资源 app.use(express.static(__dirname + '/dist')); // 配置后端路由 app.get('/api/person', (req, res) => { console.log('访问到了'); // 给客户端返回数据 res.send({ name: 'lily', age:18 }); }); // 设置端口监听 app.listen(5000, (err) => { if (!err) console.log('服务器启动成功了!'); err && console.log(err); }); ``` 5. 在终端中运行```node server.js```命令,启动Node.js服务器。 6. 现在,你可以通过访问服务器的IP地址或域名加上端口号来访问你的Vue项目。例如,如果你的服务器IP地址为192.168.0.1,端口号为5000,那么你可以在浏览器中输入```http://192.168.0.1:5000```来访问你的Vue项目。 请注意,上述代码仅提供了一个基本的配置示例,你可能需要根据你的项目需求进行更多的配置。例如,你可能需要配置代理来解决跨域问题,或者使用HTTPS来提供安全的连接等等。具体的配置取决于你的项目要求和服务器环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Etc.End

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

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

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

打赏作者

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

抵扣说明:

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

余额充值