Node+GitLab实现小程序CI系统,web前端开发面试技巧

这篇具有很好参考价值的文章主要介绍了Node+GitLab实现小程序CI系统,web前端开发面试技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

后端功能实现

  • 环境依赖

  • 实现上传小程序后台接口;

  • 实现拉取git项目到本地的接口;

  • 实现获取gitlab项目信息,分支及tag的接口;

  • 实现切换分支及tag接口

  • 实现项目编译打包的接口;

  • 实现拉起开发者工具的接口;

环境依赖

在后端功能的实现上用了以下框架和模块

  • express (node框架)

  • request(网络请求模块)

  • fs (文件处理模块)

  • log4js (输出log日志)

  • process(子进程模块,用来在node中执行shell命令)

1. 拉起开发者工具的接口

mac系统上开发者工具会默认的安装路径是/Applications/wechatwebdevtools.app, 通过process模块执行shell命令open /Applications/wechatwebdevtools.app即可打开开发者工具。

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

2. 实现上传小程序后台接口

上传接口是这个系统的核心,虽然很简单但要实现这个接口还是需要你对小程序工具的http调用有一定了解,接下来详细说一下如何完成此功能:

上文说到小程序开发者工具提供了命令行与 HTTP 服务两种接口供外部调用,开发者可以通过命令行或 HTTP 请求指示工具进行登录、预览、上传等操作。

第一步(开启http服务)

打开你的开发者工具 设置——>安全设置——>服务端口,因为调用开发者工具提供的http服务一定要拼接本地的端口号,所以后续所有的操作都是要基于开发者工具开启且服务端口开启的状态下进行操作的,默认情况下服务端口是关闭的,http 服务在工具启动后自动开启,HTTP 服务端口号在用户目录下记录,可通过检查用户目录、检查用户目录下是否有端口文件及尝试连接来判断工具是否安装。

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd 第二步(如何拿到开发者工具端口号)

在确保你的开发者工具服务端口开启的情况下,我们可以尝试通过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';

读取端口的功能封装,后续会用到

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

第三步(上传)

接口定义:

  • URL:/upload

  • HTTP 方法:GET

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

通过调用获取端口号的方法,请求上传接口拼接端口,指定项目上传目录,就是编译出来的dist文件夹目录,将接收的描述和版本号一并拼接发送上传请求即可。

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd get请求封装

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

3. 实现拉取git项目到本地的接口

这个接口的实现主要是通过Node接收项目地址然后执行git clone的shell命令实现, 需要用到Node的child_process子进程模块用来执行shell脚本。

代码实现

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

4. 实现获取gitlab项目信息,分支及tag的接口

Gitlab有一个非常强大的API系统,几乎所有的功能都有相应的API接口,为了使用API,需要从Gitlab中获取私有token。

  1. 登陆你的Gitlab

  2. 点击登陆的帐户,点击settings

  3. 点击Access Tokens gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

  4. 根据自己的需要创建适合需要的Tokens gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

成功拿到token之后只需在请求的时候作为query参数传递即可:

项目分支信息API api/v3/projects/ [projectId] /repository/branches

小程序项目tagaAPI api/v3/projects/ [projectId] /repository/tags

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

5.实现切换分支及tag接口

分支和tag接口实现的思路是一样的,接到前端请求后执行各种git命令完成

  • 切换至项目目录下 cd ./project

  • git branch 拿到本地分支信息

  • 切换分支时通过接收的分支名称比对本地是否存在分支,如分支已存在就删除再切换,不存在就直接切换

  • 通过log4js输出日志,为了页面展示用

代码实现

示例为分支切换的相关代码,tag实现的思路是一样的,只不过要把相关git命令替换即可。

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

6. 实现项目编译打包的接口

这里需要注意一下,这个接口的实现是非常灵活的,需要根据你当前项目的编译文件进行配置,比如我的项目开发时使用gulp打包编译环境到dist,其编译命令分别为:

  • gulp build:Dev(联调环境)

  • gulp build:Test(测试环境)

  • gulp build:Slave(预发布环境)

  • gulp build:Prod(线上环境)

那么同理,配置好dist输出文件目录,收到请求后执行事先实现好的shell命令即可完成打包这一步,如果你不太了解环境编译打包这块内容,可以参考我上一篇文章"《武装你的小程序——开发流程指南》";

代码实现

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

目前为止我们已经实现了六个后端功能,并生成了对应路由,分别为:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

ES6

  • 列举常用的ES6特性:

  • 箭头函数需要注意哪些地方?

  • let、const、var

  • 拓展:var方式定义的变量有什么样的bug?

  • Set数据结构

  • 拓展:数组去重的方法

  • 箭头函数this的指向。

  • 手写ES6 class继承。

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

  • 怎么解决小程序的异步请求问题?

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

其他知识点面试

  • webpack的原理

  • webpack的loader和plugin的区别?

  • 怎么使用webpack对项目进行优化?

  • 防抖、节流

  • 浏览器的缓存机制

  • 描述一下二叉树, 并说明二叉树的几种遍历方式?

  • 项目类问题

  • 笔试编程题:

gitlab-ci node,2024年程序员学习,gitlab,小程序,ci/cd

最后

技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gitlab+jenkins+harbor实现CI/CD(2)——初级

    git安装 jenkins主机上安装docker-ce 配置仓库证书 测试 创建项目 创建一个freestyle project 在jenkins主机获取密钥 在gitlab上传公钥 在jenkins上传私钥 输入测试命令后保存 点击立即构建 查看控制台输出 工作路径 构建触发器,定时触发 安装插件 gitlab和 Cloudbee docker 配置gitlab 在网络设

    2024年02月09日
    浏览(41)
  • 实现基于 GitLab 的数据库 CI/CD 最佳实践

    数据库变更一直是整个应用发布过程中效率最低、流程最复杂、风险最高的环节,也是 DevOps 流程中最难以攻克的阵地。那我们是否能在具体的 CI/CD 流程中,像处理代码那样处理数据库变更呢? DORA(DevOps Research Assessment)是一家专注于 DevOps 的研究机构, 在该领域以专业与客

    2024年02月07日
    浏览(72)
  • docker部署Jenkins(Jenkins+Gitlab+Maven实现CI/CD)

          GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。       GitLab是由GitLabInc.开发,使用MIT许可证的基于

    2024年02月03日
    浏览(38)
  • DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

    在企业开发过程中,我们开发的功能或者是修复的BUG都需要部署到服务器上去,而这部分部署操作又是重复且繁琐的工作,GitLab-CI 持续集成为我们解决了这一痛点,将重复部署的工作自动化,大大的节省了程序员们的宝贵时间。本文详细讲述了 GitLab-CI 持续集成的安装、部署

    2024年02月13日
    浏览(35)
  • gitlab ci/cd+harbor+k8s实现一键部署(python项目)

    使用 kaniko 构建 Docker 镜像 如果仓库使用http

    2024年02月13日
    浏览(52)
  • uniapp打包微信小程序详细步骤【前端开发】,web前端开发工程师

    II.打包发布 1️⃣ 获取微信小程序id: 首先,登录微信公众平台,查看自己 微信小程序的id号并复制 : 2️⃣ 填写自己的小程序id: 打开uniapp自己的工程文件,选择 manifest.json文件-微信小程序配置 ,黏贴自己的小程序id: 3️⃣ 发布: 选中 发行-小程序-微信 之后出现下面的

    2024年04月27日
    浏览(31)
  • 前端食堂技术周刊第 93 期:7 月登陆 Web 平台的新功能、Node.js 工具箱、Nuxt3 开发技巧、MF 重构方案

    美味值:🌟🌟🌟🌟🌟 口味:橙橙冰萃美式 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下上周的技术资讯。 Deno 八月更新 Deno 1.36 更灵活的权限控制、Deno Deploy 可过滤、搜索的持久化日志、Fresh 1.3 路由

    2024年02月13日
    浏览(35)
  • 【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】

    界面的实现使用了一张png图片,图片直接使用PS制作一张即可,资源下载可以查看易售小程序我的界面上方背景 将图片放到项目的静态资源文件夹下面 使用下方的代码来设置页面的背景图片 要想实现元素悬浮在背景图片上面的感觉,只需要修改一下元素的透明度即可,如下

    2024年02月09日
    浏览(38)
  • 【基于 GitLab 的 CI/CD 实践】01、GitLab CI/CD 基础概念

    目录 一、为什么要做 CI/CD ? 1.1 背景-传统的应用开发发布模式 问题 1.2 持续集成与持续交付 持续集成(CI) 持续交付(CD) 持续部署(CD) 1.3 CI/CD 的价值体现 1.4 推荐常用的 CI/CD 工具 Jenkins GitLab 二、GitLab CI/CD 功能简介 2.1 GitLab 内置持续集成功能 持续集成(CI) 连续交付(

    2024年02月16日
    浏览(50)
  • 微信小程序详细讲解页面传值,globalData,wx,web前端开发基础

    在其他非app.js文件中修改: var app = getApp() ​ app.globalData.hasLogin = true 二、 使用 wx.navigateTo 与 wx.redirectTo 的时候,可以将部分数据放在 url 里面,并在新页面 onLoad 的时候初始化 // Navigate wx.navigateTo({ url: ‘…/pageD/pageD?name=raymondgender=male’, }) ​ // Redirect wx.redirectTo({ url: ‘…/p

    2024年04月25日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包