后端功能实现
-
环境依赖
-
实现上传小程序后台接口;
-
实现拉取git项目到本地的接口;
-
实现获取gitlab项目信息,分支及tag的接口;
-
实现切换分支及tag接口
-
实现项目编译打包的接口;
-
实现拉起开发者工具的接口;
环境依赖
在后端功能的实现上用了以下框架和模块
-
express (node框架)
-
request(网络请求模块)
-
fs (文件处理模块)
-
log4js (输出log日志)
-
process(子进程模块,用来在node中执行shell命令)
1. 拉起开发者工具的接口
mac系统上开发者工具会默认的安装路径是/Applications/wechatwebdevtools.app
, 通过process模块执行shell命令open /Applications/wechatwebdevtools.app
即可打开开发者工具。
2. 实现上传小程序后台接口
上传接口是这个系统的核心,虽然很简单但要实现这个接口还是需要你对小程序工具的http调用有一定了解,接下来详细说一下如何完成此功能:
上文说到小程序开发者工具提供了命令行与 HTTP 服务两种接口供外部调用,开发者可以通过命令行或 HTTP 请求指示工具进行登录、预览、上传等操作。
第一步(开启http服务)
打开你的开发者工具 设置——>安全设置——>服务端口
,因为调用开发者工具提供的http服务一定要拼接本地的端口号,所以后续所有的操作都是要基于开发者工具开启且服务端口开启的状态下进行操作的,默认情况下服务端口是关闭的,http 服务在工具启动后自动开启,HTTP 服务端口号在用户目录下记录,可通过检查用户目录、检查用户目录下是否有端口文件及尝试连接来判断工具是否安装。
第二步(如何拿到开发者工具端口号)
在确保你的开发者工具服务端口开启的情况下,我们可以尝试通过node的fs模块去读取储存的文件信息读取端口号,端口号文件是开发者工具自动生成的,所以它的位置是固定的,但不同系统中的默认位置也不相同。
端口号文件位置:
macOS : ~/Library/Application Support/微信web开发者工具/Default/.ide
微信web开发者工具/User Data/Default/.ide
注意!!!
像是在mac中直接去读取这个默认路径是获取不到的,因为mac中一般会将工具安装在你的当前账户文件夹下,所以如果发现无法读取的情况可以到Uers的文件夹找找看。 比如我的mac上要想访问端口文件完整路径是这样的:
const portPath = '../../Users/admin/Library/Application\ Support/微信web开发者工具/Default/.ide';
读取端口的功能封装,后续会用到
第三步(上传)
接口定义:
-
URL:/upload
-
HTTP 方法:GET
通过调用获取端口号的方法,请求上传接口拼接端口,指定项目上传目录,就是编译出来的dist文件夹目录,将接收的描述和版本号一并拼接发送上传请求即可。
get请求封装
3. 实现拉取git项目到本地的接口
这个接口的实现主要是通过Node接收项目地址然后执行git clone的shell命令实现, 需要用到Node的child_process子进程模块用来执行shell脚本。
代码实现
4. 实现获取gitlab项目信息,分支及tag的接口
Gitlab有一个非常强大的API系统,几乎所有的功能都有相应的API接口,为了使用API,需要从Gitlab中获取私有token。
-
登陆你的Gitlab
-
点击登陆的帐户,点击settings
-
点击Access Tokens
-
根据自己的需要创建适合需要的Tokens
成功拿到token之后只需在请求的时候作为query参数传递即可:
项目分支信息API api/v3/projects/ [projectId] /repository/branches
小程序项目tagaAPI api/v3/projects/ [projectId] /repository/tags
5.实现切换分支及tag接口
分支和tag接口实现的思路是一样的,接到前端请求后执行各种git命令完成
-
切换至项目目录下
cd ./project
-
git branch 拿到本地分支信息
-
切换分支时通过接收的分支名称比对本地是否存在分支,如分支已存在就删除再切换,不存在就直接切换
-
通过log4js输出日志,为了页面展示用
代码实现
示例为分支切换的相关代码,tag实现的思路是一样的,只不过要把相关git命令替换即可。
6. 实现项目编译打包的接口
这里需要注意一下,这个接口的实现是非常灵活的,需要根据你当前项目的编译文件进行配置,比如我的项目开发时使用gulp打包编译环境到dist,其编译命令分别为:
-
gulp build:Dev(联调环境)
-
gulp build:Test(测试环境)
-
gulp build:Slave(预发布环境)
-
gulp build:Prod(线上环境)
那么同理,配置好dist输出文件目录,收到请求后执行事先实现好的shell命令即可完成打包这一步,如果你不太了解环境编译打包这块内容,可以参考我上一篇文章"《武装你的小程序——开发流程指南》";
代码实现
目前为止我们已经实现了六个后端功能,并生成了对应路由,分别为:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
ES6
-
列举常用的ES6特性:
-
箭头函数需要注意哪些地方?
-
let、const、var
-
拓展:var方式定义的变量有什么样的bug?
-
Set数据结构
-
拓展:数组去重的方法
-
箭头函数this的指向。
-
手写ES6 class继承。
微信小程序
-
简单描述一下微信小程序的相关文件类型?
-
你是怎么封装微信小程序的数据请求?
-
有哪些参数传值的方法?
-
你使用过哪些方法,来提高微信小程序的应用速度?
-
小程序和原生App哪个好?
-
简述微信小程序原理?
-
分析微信小程序的优劣势
-
怎么解决小程序的异步请求问题?
其他知识点面试
-
webpack的原理
-
webpack的loader和plugin的区别?
-
怎么使用webpack对项目进行优化?
-
防抖、节流
-
浏览器的缓存机制
-
描述一下二叉树, 并说明二叉树的几种遍历方式?
-
项目类问题
-
笔试编程题:
最后
技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!文章来源:https://www.toymoban.com/news/detail-852351.html
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算文章来源地址https://www.toymoban.com/news/detail-852351.html
些基础忘了,建议回去补一下。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
到了这里,关于Node+GitLab实现小程序CI系统,web前端开发面试技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!