Quéson los 기능 로고?
Supongamos que tenemos una tarea dedicada a construir la base de una página pero el resto de elementos por su completejidad serán implementadas en otra tarea,dejándola asíincompleta para el usuario final.Continuando con las buenas prácticas,nos gustaría agregar el có digoal branch principal("지속 통합"y "지속 배치")?pero que vamos hacer con esta página que est á incompleta?아쿠스 동드 엔트라 엔조이고 로스터 깃발.
🤔 규삼?
Son simples valores booleanos que nos permite utilizar con algún condicial para mostrar o esconder una sección,asíde simple😁.
✏️ ?Cómo los puedo definir?
Algunas de las opciones que me vienen a la mente son:
🔨 ?Para quémás lo puedo Utizar?
Los feature flags también son utilizados en estrategias de A/B testing en el que puedes mostrar cierta functionalidad(feature/característica)A una parte de la población de usuarios y A otra no.Esto es una estrategia de marketing que permite descubrir que es más atractivo/visitado/utilizado por el usuario.
🤨 제안
false
(valor inicial)atrue
(respuesta del servicio)porque independentientemente del tiempo que tome en returnar el servicio,solo se muestra cuando seatrue
pero no va a pasar lo mismo si definimos comotrue
el valor inicial y pasafalse
,en esta situación puede llegar a pasar un“flash”en el que se despliega una sección y luego se esconde por el tiempo que toma la respuesta del servicio en volver,introductiondo un comportamiento in sperado en el app.💡회사 명
Construiremos una aplicación de Angular con un component toggle,que nos permitirárepresentar el valor definido en Bullet Train(servicio que utilizaremos para definir los flags).
environment
copiamosél ID(lo necesitaremos luego), y creamos un flag que se llametoggle_status
.npm i bullet-train-client --save
environmentID
con el ID que copiaste en el paso 1.import { Injectable } from '@angular/core';
import bulletTrain from 'bullet-train-client';
const environmentID = 'XXXXXXXX';
@Injectable({ providedIn: 'root' })
export class FeatureFlagService {
public getFlags() {
return bulletTrain.getAllFlags();
}
}
export function preloadFlags() {
return async function() {
return bulletTrain.init({
environmentID
});
};
}
APP_INITIALIZER
para inyectar los valores En el app,@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent, ToggleComponent ],
bootstrap: [ AppComponent ],
providers: [
{
provide: APP_INITIALIZER,
multi: true,
useFactory: preloadFlags
}
]
})
export class AppModule { }
그거 알아요?🔝APP_INITIALIZER
que permite decirle a Angular que ejecute la función factory que definíamos(la cual debe ser una promesa)antes de iniciar.multi
le indica que se debe agregar este evento junto a otros que hayan sido definidos en alguna otra parte del app.import { Component } from '@angular/core';
import { FeatureFlagService } from './feature-flag.service';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
public isActive: boolean;
constructor(private featureFlags: FeatureFlagService ) {
const { toggle_status } = this.featureFlags.getFlags()
this.isActive = !!toggle_status.enabled;
}
}
<h2>Ejemplo</h2>
<app-toggle [isActive]="isActive"></app-toggle>
Si marcamos comoenabled
el flag en Bullet Train,el componente se mostrarácomo activo desde el inicio del app.Puedes Encentar el ejemplo completo acá
https://stackblitz.com/edit/feature-flags-angular-bullet-train
👀결론
Los feature flags es una herramienta poderosa que nos permite poder seguir integrando nuestro código con el de otros y a su vez esconder o mostrar functionalidades al-usuario según la condición que definamos.
—
저는 커피를 좋아하지 않는 사람입니까?
Reference
이 문제에 관하여(Quéson los 기능 로고?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/marianocodes/que-son-los-feature-flags-kc7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)