本来想用英文来写这篇文章,可想想还是算了,自己的英文可能说不清楚。。。
description
前几天的有一个关于feature toggle的session,因为自己英文的原因听的糊里糊涂的,自己找了些资料学了下。
Queation
- 什么是feature toggle?
feature toggle 是一种强大的技术,它可以允许团队不用修改代码而来改变系统的功能行为。 - 为什么使用feature toggle?
在团队中,我们完成了一个功能,但PO说暂时不需要这个功能。怎么办?删除或注释代码?No!又或者是这样的一个场景,你每两个周发布一次生产版本,但是同时又需要去维护一个很多个月才能进行发布的特性分支。那么如何去保障团队成员们在开发主线(mainline)上的工作不受到未完全实现的特性分支的影响呢?feature toggle 可以解决这个问题。 - 如何实现feature toggle?
基础思路:存在一个配置文件,配置文件里定义了许多的toggle,这些toggle都是待发布的特性功能。这一些toggle定义了哪一些features需要呈现,哪些并不需要。
例如:在一个网站中,前端使用jsp,它的代码是这样的:
<toggle name="petSurvey">
<p>you are so beautiful!</p>
</toggle>
当你将配置toggle的开关打开之时,features的功能将会随之打开,否则将会我们的app会继续忽略features功能代码。
- 如果不用toggle,我们该如何实现这样的功能?
假如我们的代码之前是这样的:
function newFeature(){ //implementation lives }
现在我们的要用一种新的办法来实现,我们该怎么做?或许我们可以使用一个用于判断的标志变量:
function newFeature(){
var useNewFeature = false;
// useNewFeature = true; //uncomment if you want to use new ways...
if( useNewFeature ){
//TODO: new ways to implementation
}else{
//TODO: old ways to implementation
}
}
- toggle在前端中如何使用,在后端中如何使用?
- toggle 如何测试?
- toggle 如何发布?
- toggle 有何风险?
(文章太浅,时间有限,还有很多问题没有涉及到,还需继续学习,文章未完待续。。。)
action
在项目中使用,继续探究学习。。。