乐趣区

关于前端:写给初用Nestj做项目的你初篇-项目架构与前端零基础搭建gitlab

写给初用 Nestj 做我的项目的你(初篇: 我的项目架构与前端零根底搭建 gitlab)

事件是这样的

     公司派我去做一个外省的我的项目, 这个我的项目人员比拟紧缺所以我负责后端局部, 并且大家手头都有其余工作导致工作很辛苦, 这个我的项目外面应用的是 nest 框架来编写后端代码, 因为共事都不在一起导致沟通不便还是踩了很多坑的, 我心愿大家可能避开我踩过的坑所以编写这个系列文章。

     咱们的我的项目要求操作 gitlab 所以这里我也会具体介绍如何疾速搭建一套 gitlab 平台 并调用它的 api, 以及docker 的繁难操作, 还有 typeorm 官网上没有举过的操作数据库的具体例子。

     因为我是从自学前端转全栈的, 我更了解没有服务端根底的同学想晓得什么, 所以这个系列文章也很适宜 没有后端开发教训 前端同学 因为相干常识我都会以前端听得懂的形式讲明确, 如果你也想理解 nest 框架的话那我就带你钻研。

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

第一篇要做的事

     因为相干内容很多, 所以第一篇咱们只做最根本的性能, 以及 gitlab 的搭建, 前面都会具体聊各种操作。

一. 初始化nest

     nestkoa 等框架都差不多, 我不扯什么大的概念, 咱们间接开始实战应用, 最初咱们再一起总结 nest 到底有什么特点。

node 与 npm 咱们前端必备 不多说了

第一步: 全局装置 cli 工具, 并且生成我的项目。

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

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

cd share

yarn start:dev  // 这样你每次做出扭转代码能够立刻失效

默认是 3000 端口能够拜访:

二. 快捷命令创立所有

     nest有很多好用又智能的命令, 不便咱们创立一些模块, 命令我先列在这里, 前面大家能够来这边查看。

因为举荐把各个模块都放到 src/modules 外面, 所以上面写的是残缺的门路。

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

三. 控制器

     咱们先创立一个 users 控制器, 负责承受 ’xxxx/users’ 相干的路由。

nest g controller modules/users

     测试文件咱们先不论它, 这个 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')指定了路由的匹配。

让咱们看看成果:

四. service执行具体的操作

     咱们当然不能用 Controller 执行具体的操作, 须要 service 这个小伙伴来执行了, 咱们依然能够通过命令行创立它。

nest g service modules/users

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 调用外面的办法。

五. nest默认解决返回值类型为 promise 的状况

     nest框架会主动把咱们返回给用户的 promise 转换为具体的后果, 所以上面三种写法用户收到的返回值是雷同的。


六. 须要一台服务器

     当然你也能够抉择 虚拟机 , 我这边是间接在腾讯云买了一个月的服务器, 这里要强调一点, gitlab 的搭建对配置是有要求的, 1 核 1G会很卡的, 我配置的是 2 核 4G 仍然会呈现卡顿的景象但勉强能够失常应用了, 我的是CentOS 7.6

七. 前端简略应用docker

     只会前端常识的同学也不要紧, docker只是个工具而已, 你能够认为他是一种性能上相似 cli 的插件, 大家把写好的代码与配置好的环境上传到 docker 下面, 咱们就能够用它获取到一套有 nginxMySQL 后端服务 前端服务 的残缺零碎, 接下来咱们实战一下。

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

$ docker version

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

第三步: 设置源减速
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 官网

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

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

查看运行中的程序
docker container ps

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

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

     以后还无法访问 13800 端口, 须要去云控制台配置一下。

     因为我没有独自搞防火墙所以间接在腾讯这里设置就行了, 如果是装置了防火墙的机器请执行上面的语句。

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

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

等两分钟就能够拜访你的 服务器 ip:13800

初始账号是 root, 明码你轻易设置吧。

拉到最上面

设置周一是每周的第一天

十一. 注册小号, 并且审核通过

     理论开发中咱们必定不必 root 账号开发, 咱们注册一个小号。

     尽管事实注册胜利, 然而你应用这个号依然登录不下来, 因为你还要用 root 通过以下账号的注册申请。

做完这些就能够失常拜访了。

end.

     下一篇咱们要批改 gitlab 的配置以及应用 gitlab-runner, 使咱们的 gitlab 也能够走 ci/cd 流程, 并且正式开始调用 gitlab 的 api, 是不是也不是那么难, 接下来咱们也要进入 nest 的正式开发了, 这次就是这样, 心愿和你一起提高。

退出移动版