写给初用 Nestj 做我的项目的你(初篇: 我的项目架构与前端零根底搭建 gitlab)
事件是这样的
公司派我去做一个外省的我的项目, 这个我的项目人员比拟紧缺所以我负责后端局部, 并且大家手头都有其余工作导致工作很辛苦, 这个我的项目外面应用的是 nest
框架来编写后端代码, 因为共事都不在一起导致沟通不便还是踩了很多坑的, 我心愿大家可能避开我踩过的坑所以编写这个系列文章。
咱们的我的项目要求操作 gitlab
所以这里我也会具体介绍如何疾速搭建一套 gitlab 平台
并调用它的 api
, 以及docker
的繁难操作, 还有 typeorm
官网上没有举过的操作数据库的具体例子。
因为我是从自学前端转全栈的, 我更了解没有服务端根底的同学想晓得什么, 所以这个系列文章也很适宜 没有后端开发教训
的前端同学
因为相干常识我都会以前端听得懂的形式讲明确, 如果你也想理解 nest
框架的话那我就带你钻研。
注: nest
的官网写的真的很不错, 但咱们这篇更偏实战。
第一篇要做的事
因为相干内容很多, 所以第一篇咱们只做最根本的性能, 以及 gitlab
的搭建, 前面都会具体聊各种操作。
一. 初始化nest
nest
与 koa
等框架都差不多, 我不扯什么大的概念, 咱们间接开始实战应用, 最初咱们再一起总结 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 '获取用户列表';}
}
@Get()
这个装璜器就是接管get 申请
的意思, 它是从@nestjs/common
获取的。getUsersList
这个函数名只是形容这个函数的用处即可。@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
下面, 咱们就能够用它获取到一套有 nginx
、MySQL
、 后端服务
、 前端服务
的残缺零碎, 接下来咱们实战一下。
第一步: 装置
$ 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
hostname
改成本人的服务器ip
。name
轻易命名, 不便当前咱们用docker
治理。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
的正式开发了, 这次就是这样, 心愿和你一起提高。