写给刚接触Nestj做项目的你(上篇:项目结构与前端-end零基础搭建gitlab)事情是这个公司派我去外省做项目。这个项目比较缺人手,所以我负责后端部分,大家手头还有其他的事情,工作起来很辛苦。本项目使用nest框架编写后端代码。同事不在一起,导致沟通不便,踩了很多坑。希望大家能避免我踩过的坑,所以写了这个系列文章。我们的项目需要操作gitlab,所以这里我也会详细介绍一下如何快速搭建一个gitlab平台并调用它的api,以及docker的简单操作,以及上面没有提到的操作数据库的具体例子typeorm的官方网站。自从自学前端转全栈后,更明白没有服务端基础的同学想知道什么,所以本系列文章也非常适合没有后端开发的前端同学经验,因为我可以把前端的相关知识了解清楚,如果你也想了解nest框架,那我就带你去研究下。注:nest官网确实不错,但我们的文章更实用。第一篇要做的事由于相关内容比较多,所以第一篇我们只做最基本的功能和gitlab的搭建,后面会详细说到各种操作。1.初始化nestnest和koa等框架类似,大概念我就不说了,直接开始使用,最后一起总结一下nest的特点。Node和npm是我们前端所必需的。第一步就不多说了:全局安装cli工具,生成工程。$npmi-g@nestjs/cli$nest新项目名?????????????我这里初始化了一个名为share的项目,我们以开发模式运行,下一章会介绍调试模式运行。cdshareyarnstart:dev//这样每次修改代码都会立即生效。默认是3000端口,可以访问:2.创建一切的快捷命令nest有很多有用的智能命令,方便我们创建一些模块。先从这里列出的命令说起,以后大家可以来这里查看。由于建议将各个模块放在src/modules中,下面写了完整的路径。命令效果nestgcontrollermodules/name创建控制器nestgservicemodules/name创建服务器nestgmodulemodules/name创建模块nestgguardname创建守卫巢ginterceptorname创建拦截器3.controller我们首先创建一个userscontrolServer,负责接受'xxxx/users'相关的路由。nestgcontrollermodules/users我们不关心测试文件。这个xxxxxx.controller.ts文件会用来处理如何分配路由和装饰参数。import{Controller,Get}from'@nestjs/common';@Controller('users')exportclassUsersController{@Get()getUsersList(){return'Getuserlist';}}@Get()这个装饰器是表示接收一个get请求,从@nestjs/common获取。函数名getUsersList只是描述了这个函数的用途。@Controller('users')指定要匹配的路由。来看看效果:4.Service执行具体操作当然我们不能使用Controller来执行具体操作,需要小伙伴服务来执行,通过命令行创建还是可以的。nestgservicemodules/usersimport{Injectable}from'@nestjs/common';@Injectable()exportclassUsersService{getUsersList(){return[{name:'张三',},{name:'李四'}]}}让controller调用serviceshare/src/modules/users/users.controller.ts修改如下:import{Controller,Get}from'@nestjs/common';import{UsersService}from'./users.service';@Controller('users')exportclassUsersController{constructor(privatereadonlyusersService:UsersService){}@Get()getUsersList(){returnthis.usersService.getUsersList();}}注意:是在构造函数的参数中声明的usersService,并使用this.usersService调用里面的方法。5、Nest默认处理返回值类型为promise的情况?nest框架会自动将我们返回给用户的promise转化为具体的结果,所以下面三种写法用户收到的返回值是一样的.6.需要服务器当然也可以选择虚拟机。直接从腾讯云买了一台服务器,用了一个月。这里要强调一下,gitlab的搭建是有配置要求的。1核1G会很卡是的,我的配置是2核4G,卡顿的现象还是会出现,但是勉强可以正常使用。我的配置是CentOS7.6。7、docker在前端的简单使用把写好的代码和配置好的环境交给docker,我们就可以用它来得到一个完整的系统,有nginx、MySQL、后端服务、前端服务。接下来,我们来练习一下。第一步:安装$yum-yinstalldocker-io第二步:启动&查看版本systemctlstartdocker$dockerversion启动后会看到两个版本信息,客户端和服务器(C/S)架构的程序,简单理解为你的操作,也就是输入的命令和执行的命令是分开的,这样你输入的命令就可以通过指定具体的服务器来执行,这里就不用太纠结了。第三步:设置源码加速mkdir-p/etc/dockertee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://fwvjnv59.mirror.aliyuncs.com"]}EOF上面命令的意思是将内容插入到daemon.json中。八。使用docker下载gitlab镜像上面提到的docker配置完成后,我们就可以使用它拉取gitlab镜像了。建议先去官网看dockerbuildgitlab官网我们需要更改上面的代码:sudodockerrun--detach\--hostnameserveripaddress\--publish443:443--publish13800:80--publish13822:22\--name随便命名\--restartalways\--volume$GITLAB_HOME/config:/etc/gitlab\--volume$GITLAB_HOME/logs:/var/log/gitlab\--volume$GITLAB_HOME/data:/var/opt/gitlab\gitlab/gitlab-ce:latesthostname改成自己的服务器ip。名字随便起,方便以后用docker管理。gitlab-ee改为gitlab-ce,可以认为ce是社区版,足够我们学习和使用了。查看镜像dockerimagels查看正在运行的程序dockercontainerps我设置的名称为“gitlab_lulu”,我们在下一篇文章中会使用这个名称来配置gitlab-runner。9、打开安全组(这里演示腾讯云)目前无法访问13800端口,需要到云控制台配置。由于我没有单独的防火墙,直接在腾讯设置即可。如果是安装了防火墙的机器,请执行以下语句。firewall-cmd--add-port=13800/tcp---permanentfirewall-cmd---reload10.初始密码,设置中文环境等待两分钟访问你的服务器ip:13800。初始账号为root,密码可任意设置。下拉到最底下,设置周一为11月每周的第一天。注册小号,通过审核?在实际开发中,我们肯定不需要root账号开发,我们注册一个小号。虽然实际注册成功了,但是还是不能用这个账号登录,因为你还需要用root来申请注册下面的账号。完成后就可以正常访问了。结尾。下一篇我们将修改gitlab的配置,使用gitlab-runner,让我们的gitlab也能走完ci/cd流程,正式开始调用gitlabapi。这不是很难吗?接下来,我们也将进入Nest已经正式开发完成,这一次就到此为止吧,希望与大家共同进步。
