【Vuejs】1247- Vue3 如何实现 Feature Flags?

2022-03-05 09:43:43 浏览数 (1)

在开发组件库或者插件,经常会需要区分多种环境构建,从而实现:

  • 提供各种「体积」版本:全量版、精简版、基础版等;
  • 提供各种「环境」版本:web 版、nodejs 版等等;
  • 提供各种「规范」版本:esm 规范版本、cjs 规范版本、UMD 规范版本等等。

那么如何能够方便实现上面功能呢?这种场景就适合使用 Feature Flags,在构建过程中,通过开关的启用和关闭,对构建代码的过程进行动态设置,从而更好的实现 Tree Shaking。

Tree Shaking 是一种通过消除最终文件中未使用的代码来优化体积的方法。

本文会从 Vue 源码(版本号:3.0.11)中使用的 Feature Flags 进行构建的过程开始介绍,然后通过简单示例进行学习,最后介绍 rollup、webpack 和 Vite 中的实现。

一、什么是 Feature Flags

Feature Flag(又名 Feature Toggle、Flip等)是一种允许控制线上功能开启或者关闭的方式,通常会采取配置文件的方式来控制。

http://fex.baidu.com/blog/2014/07/feature-flag/

可以理解为在代码中添加一个开关,当开关开启,则逻辑会执行下去,否则不会执行,通常代码表现形式为 if语句,举个简单示例:

代码语言:javascript复制
const flags = true;
const test = () => flags && console.log('Hello Feature Flags');

flagstrue则执行输出,否则不会。现在我们想控制日志会不会输出,只需改变 flags的值即可,test方法逻辑不用修改。

0 人点赞