写给初用Nestj作项目的你(初篇: 项目架构与前端零基础搭建gitlab)

写给初用Nestj作项目的你(初篇: 项目架构与前端零基础搭建gitlab)

事情是这样的

     公司派我去作一个外省的项目, 这个项目人员比较紧缺因此我负责后端部分, 而且你们手头都有其余任务致使工做很辛苦, 这个项目里面使用的是nest框架来编写后端代码, 因为同事都不在一块儿致使沟通不便仍是踩了不少坑的, 我但愿你们可以避开我踩过的坑因此编写这个系列文章。前端

     咱们的项目要求操做gitlab因此这里我也会详细介绍如何快速搭建一套gitlab平台并调用它的api, 以及docker的简易操做, 还有typeorm官网上没有举过的操做数据库的具体例子。node

     因为我是从自学前端转全栈的, 我更理解没有服务端基础的同窗想知道什么, 因此这个系列文章也很适合没有后端开发经验前端同窗由于相关知识我都会之前端听得懂的方式讲明白, 若是你也想了解nest框架的话那我就带你研究。nginx

     注: nest的官网写的真的很不错, 但咱们这篇更偏实战。git

第一篇要作的事

     因为相关内容不少, 因此第一篇咱们只作最基本的功能, 以及gitlab的搭建, 后面都会详细聊各类操做。docker

一. 初始化nest

     nestkoa等框架都差很少,我不扯什么大的概念, 我们直接开始实战使用, 最后咱们再一块儿总结nest到底有什么特色。数据库

node 与 npm 我们前端必备 很少说了npm

第一步: 全局安装cli工具, 而且生成项目。json

$ npm i -g @nestjs/cli
$ nest new 项目名

     我这边初始了一个名为share的工程, 让咱们以开发模式运行它, 下一章会介绍调试模式运行。后端

cd share

yarn start:dev  // 这样你每次作出改变代码能够当即生效

默认是3000端口能够访问:
image.pngapi

二. 快捷命令建立一切

     nest有不少好用又智能的命令, 方便咱们建立一些模块, 命令我先列在这里, 后面你们能够来这边查看。

因为推荐把各个模块都放到 src/modules里面, 因此下面写的是完整的路径。

命令 效果
nest g controller modules/名 创建控制器
nest g service modules/名 建立服务器
nest g module modules/名 建立模块
nest g guard 名 建立守卫
nest g interceptor 名 建立拦截器

三. 控制器

image.png

     咱们先建立一个users控制器, 负责接受'xxxx/users' 相关的路由。

nest g controller modules/users

image.png

     测试文件咱们先无论它, 这个xxxxxx.controller.ts文件之后咱们专门用来处理路由如何分配以及一些对参数的装饰器处理。

import { Controller, Get } from '@nestjs/common';

@Controller('users')
export class UsersController {
    @Get()
    getUsersList() {
        return '获取用户列表';
    }
}
  1. @Get()这个装饰器就是接收get请求的意思, 它是从@nestjs/common获取的。
  2. getUsersList这个函数名只是描述这个函数的用途便可。
  3. @Controller('users')指定了路由的匹配。

让咱们看看效果:

image.png

四. service执行具体的操做

     咱们固然不能用Controller执行具体的操做, 须要service这个小伙伴来执行了, 咱们仍然能够经过命令行建立它。

nest g service modules/users

image.png

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

@Injectable()
export class UsersService {
    getUsersList(){
        return [{
            name:'张三',
        }, {
            name:'李四'
        }]
    }
}
controller调用service

share/src/modules/users/users.controller.ts修改以下:

import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
    constructor(
        private readonly usersService: UsersService
    ) { }
    @Get()
    getUsersList() {
        return this.usersService.getUsersList();
    }
}

注意: 是在constructor的参数里面声明的usersService, 而且使用this.usersService调用里面的方法。

image.png

五. nest默认处理返回值类型为promise的状况

     nest框架会自动把咱们返回给用户的promise转换为具体的结果, 因此下面三种写法用户收到的返回值是相同的。
image.png
image.png
image.png

六. 须要一台服务器

     固然你也能够选择虚拟机, 我这边是直接在腾讯云买了一个月的服务器, 这里要强调一点, gitlab的搭建对配置是有要求的, 1核1G会很卡的, 我配置的是2核4G依然会出现卡顿的现象但勉强能够正常使用了, 个人是CentOS 7.6
image.png

七. 前端简单使用docker

     只会前端知识的同窗也没关系, docker只是个工具而已, 你能够认为他是一种功能上相似cli的插件, 你们把写好的代码与配置好的环境上传到docker上面, 咱们就能够用它获取到一套有nginxMySQL后端服务前端服务的完整系统, 接下来咱们实战一下。

第一步: 安装
$ yum -y install docker-io
第二步: 启动 & 查看版本
systemctl start docker

$ docker version

     启动以后你会看到两个版本信息, 客户端与服务端(C/S)架构的程序, 简单理解为你的操做也就是输入的命令与执行命令是分开的, 这样就能够作到你输入的命令指定某个特定的server执行, 这里不用过度纠结。
image.png

第三步: 设置源加速
mkdir -p /etc/docker 

tee /etc/docker/daemon.json <<-‘EOF’
{
"registry-mirrors":["https://fwvjnv59.mirror.aliyuncs.com"]
}
EOF

     上面命令的意思就是把 内容插入到daemon.json里面。

八. 利用docker下载gitlab镜像

     上面说的docker配置弄完后, 咱们就能够用使用它来拉取gitlab的镜像了。

     推荐先来官网看看docker搭建gitlab官网
image.png

     上述代码咱们要改动一下:

sudo docker run --detach \
  --hostname 服务器的ip地址 \
  --publish 443:443 --publish 13800:80 --publish 13822:22 \
  --name 随便命个名 \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest
  1. hostname改为本身的服务器ip
  2. name随便命名, 方便之后咱们用docker管理。
  3. gitlab-ee改为gitlab-ce, 能够认为ce是社区版, 足够咱们学习使用了。
查看镜像
docker image ls

image.png

查看运行中的程序
docker container ps

image.png

我把name设为了"gitlab_lulu", 下一篇咱们会用到这个名字去设置gitlab-runner

九. 开启安全组(这里演示腾讯云)

     当前还没法访问13800端口, 须要去云控制台配置一下。
image.png

image.png

image.png

     因为我没有单独搞防火墙因此直接在腾讯这里设置就好了, 若是是安装了防火墙的机器请执行下面的语句。

firewall-cmd --add-port=13800/tcp —-permanent 
firewall-cmd —-reload

十. 初始密码, 设置中文环境

等两分钟就能够访问你的服务器ip:13800
image.png

初始帐号是root, 密码你随便设置吧。

image.png

拉到最下面

image.png

设置周一是每周的第一天

image.png

十一. 注册小号, 而且审核经过

     实际开发中咱们确定不用root帐号开发, 咱们注册一个小号。
image.png

     虽然现实注册成功, 可是你使用这个号仍然登陆不上去, 由于你还要用root经过如下帐号的注册申请。

image.png

作完这些就能够正常访问了。

end.

     下一篇咱们要修改gitlab的配置以及使用gitlab-runner, 使咱们的gitlab也能够走ci/cd流程, 而且正式开始调用gitlab的api,是否是也不是那么难, 接下来咱们也要进入nest的正式开发了, 此次就是这样, 但愿和你一块儿进步。

相关文章
相关标签/搜索