博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谈一谈前端工程化
阅读量:5907 次
发布时间:2019-06-19

本文共 1730 字,大约阅读时间需要 5 分钟。

hot3.png

前端持续集成

先来讲下前端持续集成的流程吧,我画了一个简图。

我的目标是构建一个工程化的全自动环境,使得开发者在不改变现有工作方式的前提下(无痛)完成代码集成等一系列工作。影响的角色:开发,测试,产品经理,领导。

(图中实线代表需要手动进行,虚线代表自动执行)

1.1开发者首先提交代码到中央仓库,中央仓库触发钩子通知CI Server有代码提交。(开发者不需要为此做任何改变,和以前一样提交代码就可以了)

1.2.收到通知后CI Server会自动执行一段脚本(checkout->build->lint->test).完成之后会发邮件(调用Mail Service)通知开发者和代码维护者(比如tester等)构建信息(全自动)

 

2.1开发人员给代码打tag,中央仓库触发钩子通知CD Server有tag生成。(开发者不需要为此做任何改变,和以前一样打tag就可以了)

2.2收到通知后CD Server自动执行一段脚本(checkout->build->deploy)(全自动)

2.3项目上线后出现问题(报错)会邮件(调用Mail Service)通知开发者(图中也通知了维护者,视情况而定)报错的函数和上下文信息,方便开发及时发现问题并快速排查。(全自动)

 

3.1开发者首先提交代码到中央仓库,中央仓库触发钩子通知package analyser(开发者不需要为此做任何改变,和以前一样提交代码就可以了)

3.2analyser server 对代码的pakage.json文件进行比对,如果发生变化,则分析应用的依赖包,列出当前包的信息(比如依赖的包更新了一个bug,我们能及时知晓并更新修复)。(全自动)

 

4.1代码检查通过后,开发者发起pull request。(开发者不需要为此做任何改变,和以前一样提交pull request就可以了)

4.2维护者看到CI发过来的信息,进行代码审查,根据结果合并或者拒绝。(有了自动集成结果的支持,不需要维护者自己运行去检查了)

 

5.对于用户,可以提供一个dashboard。 展示CI  CD 以及Package Analyser的结果(全新产品,就是上述各个系统的运行信息上报给呈现出现,并进行适当加工。)

 

当然这张图不仅仅是前端使用,基于docker CI CD 完全可以通用。但是对于package Analyser我们可能需要做一些变通。 因为package Analyser 作为前端的话分析的是node package 作为后端则是maven repository。 

1.transformer 负责从不同来源(node package 和 maven repository)转化为标准输出

2.fetcher拿到信息之后去请求不同仓库获取版本信息和版本CHANGLOG

正规开源软件都是遵循语义化版本的。也就是传说中的主版本,次版本和修订版。

另外正规开源软件都是有更细日志CHANGLOG的,根据这些我们可以得到一些信息。

对于公司内部私有项目,希望也遵循这样的规范

3.reducer过滤掉不需要显示的,汇总成标准输出格式

4.view层拿到标准输入,展现给user

5.user可以查看对应项目的包分析结果。

前端开发工程化

下面这张图描述了我目前开发的流程,这套流程可以很好的完成前后端解耦。另外一些前端工程化的东西我没有涉及(比如liveload,less处理,合并压缩等),这些都可以实现自动化。并不是说那些不重要,只是网上例子太多,自行google就好了。

1.开发拿到设计,约定接口,记录到api server

2.本地开发 host 改成本地ip

比如程序中fetch('www.ltcrm.com/a')

host 增加一行: 127.0.0.1 front.ltcrm.com

3.联调 host改成 后端开发者ip

host 增加一行: 10.33.88.144 front.ltcrm.com

10.33.88.144是后端开发者ip

4.用户可以查看项目接口信息

转载于:https://my.oschina.net/wanjubang/blog/737139

你可能感兴趣的文章
axios 拦截 , 页面跳转, token 验证(自己摸索了一天搞出来的)
查看>>
基础设施即服务系列:Windows Azure上支持Linux虚拟机
查看>>
ora-12541:TNS:无监听程序
查看>>
常用函数
查看>>
谷歌J2ObjC(Java to Objective-C)版本更新
查看>>
Spring.Net学习笔记三(对象的创建)
查看>>
matlab练习程序(线性分类器<感知器>)。。。待改进
查看>>
什么是Log-Gabor 滤波器,为什么他们有效
查看>>
Js随机颜色值选取
查看>>
GOLANG 注释
查看>>
转: 深入理解Java内存模型(一)——基础
查看>>
BTree和B+Tree详解
查看>>
Struts2_03_控制器(过滤器/拦截器/Action)
查看>>
3D打印浪潮中的赢家与输家
查看>>
软件测试之Monkey 初步了解(入门级II)
查看>>
语法分析
查看>>
flex上下固定中间滚动布局
查看>>
共享内存之——mmap内存映射
查看>>
文件系统在NVMe SSD上的性能表现分析
查看>>
chcon命令详解
查看>>