AoneFlow代码管理实践 + React + Redux +
在工作中有这么个需求:
要求开发一个应用,满足
1.支持多语言
2.不同语言有可能对应不同的样式
仔细想想好像还挺有价值
同时,还看了一篇介绍Aoneflow,代码分支管理流程的文章
感觉对于团队开发相当受用,这就来根据这个需求实践下
成果如下,点击Logo和Title查看效果,Live Demo
![](https://img.haomeiwen.com/i6700418/c7235acd85115e15.gif)
工具:vscode开发,Aliyun + docker + jenkins做自动服务器部署
技术栈:React、Redux、Router全家桶(Saga后续补),styledComp实现多样式,react-intl实现多语言
初始化Project
![](https://img.haomeiwen.com/i6700418/3c801596bf52179c.png)
将release/1.0.0分支合并到master(合并前是空的),触发已经设置好了的Jenkins自动部署机制,查看Aliyun服务器部署情况
![](https://img.haomeiwen.com/i6700418/ee52d2c48ce43338.png)
![](https://img.haomeiwen.com/i6700418/4046bb8cc0525f27.png)
![](https://img.haomeiwen.com/i6700418/70235b2c50181fa4.png)
至此,基本的code base+部署架子已经完成,删除release/1.0.0分支,可以开始实践Aoneflow了
模拟:多人开发多个feature
现在赋予这个react app,支持“多语言,多样式支持”的feature
基于目前的master,新建分支
分别在不同的分支完成不同的feature,模拟多人开发过程
![](https://img.haomeiwen.com/i6700418/4ce3677e9228ac72.png)
感受一下
feature/Support_redux
![](https://img.haomeiwen.com/i6700418/196a262101d0de38.gif)
feature/Support_Intl
![](https://img.haomeiwen.com/i6700418/a9dcea66baed825a.gif)
feature/Support_styledComp
从master新建release/1.1.0,与feature分支合并
![](https://img.haomeiwen.com/i6700418/6cd92fba7181901d.png)
这里遵循几个原则
- 小版本更新第二位,如1.2.0,1.3.0....
- 大版本更新第一位,如2.0.0
- hotfix更新小版本,来新建release分支,同时update第三位
如merge了release/1.1.0的master branch,发现bug,从master新建hotfix/bug1分支,同时新建release/1.1.1分支,修复后hotfix/bug1分支merge到release/1.1.1,再merge到master
合并后删除被合并的feature分支
Ex.合并Redux到release/1.1.0分支
![](https://img.haomeiwen.com/i6700418/54a142fd44e6d0ef.png)
![](https://img.haomeiwen.com/i6700418/faab7e8b76d8087b.png)
![](https://img.haomeiwen.com/i6700418/45e151f5497d1ca4.png)
![](https://img.haomeiwen.com/i6700418/407601012c86d42b.png)
重复merge操作,把Intl,StyledComponent也merge进去
最终的样子
接下来,从代码层面完美地把三个feature融合在一起
已实现点击Logo触发语言切换事件,点击Subtitle触发theme切换事件
其实主要方便在语言切换和theme切换可以用json格式保存内容,使用内容
![](https://img.haomeiwen.com/i6700418/dfd47fa1652d1cf1.png)
![](https://img.haomeiwen.com/i6700418/e392772ce8fdb5a5.png)
仔细想想,还可以写一套公用的theme-style.json,然后以java继承的思想继承下来,再基于继承,重写所要改变的样式,不过对前端UI功力要求挺高的把
后语:
原来 Styled-component竟然是这么gay的....