从重复开发到自动化:我如何优化 H5 活动开发流程

0 阅读9分钟

从“页面切图仔”到 CLI 自动化:一次 H5 活动开发效率优化实践

在很多互联网产品中,H5 活动页几乎是不可避免的一类业务:节日活动、拉新活动、排行榜活动、抽奖活动、签到活动……这些页面往往周期短、上线频繁,而且视觉设计高度定制。

对于前端开发来说,这类需求有一个非常典型的特点:

每个活动看起来都不一样,但开发流程几乎完全一样。

于是我们经常会陷入一种循环:

新活动 
↓  
搭页面结构  
↓  
还原设计稿    
↓  
写业务逻辑  
↓  
上线  
↓  
下一个活动

在这样的业务背景下,开发效率就变得尤为重要。如果每次活动都从头搭建页面、写组件、处理 UI,那么开发成本会非常高。

在过去一段时间里,我尝试通过一系列工程优化手段,逐步改造自己的 H5 活动开发流程。从最初的古法纯手工编码,到 CLI 自动化,再到思考 UI 自动化和设计稿生成,这个过程让我对“工程效率优化”有了很多新的理解。

这篇文章记录的就是这次探索的完整过程。

一、背景:H5 活动开发的典型问题

在很多公司中,活动开发通常具有几个典型特点:

  • 周期短:活动往往在一两周内完成开发并上线
  • UI 高度定制:几乎每个活动的视觉设计都不同
  • 上线频繁:每个月可能会有多个活动
  • 重复开发多:虽然 UI 不一样,但开发流程非常相似

一个典型的活动开发流程通常是这样的:

活动策划出需求
↓
设计稿评审
↓
新建活动
↓
搭页面结构
↓
实现 UI
↓
编写业务逻辑
↓
调试与上线

表面上看,每个活动都不一样,但实际开发过程中会出现很多重复劳动,例如:

  • 新建活动目录
  • 创建页面组件
  • 创建样式文件
  • 创建 API 文件
  • 创建弹窗组件
  • 写基础布局结构
  • 接入通用组件

这些工作虽然不复杂,但每次活动都要重复做一遍。

久而久之,我开始思考一个问题:

有没有办法减少这些重复开发?

二、第一阶段:CLI 自动化

我最先优化的,是项目初始化流程

在没有自动化之前,每次新活动都需要手动修改、创建一系列文件,例如:

src/router/activities/index.js        // h5活动的路由
src/api/index.js                      // 数据请求的文件
src/views/activities/spring2026       // spring2026活动所需要的结构
                      ├ index.vue
                      ├ index.less
                      ├ components/

同时还要写一些基础代码,例如:

  • 页面容器
  • 通用布局
  • 基础样式
  • 类型定义

这些步骤虽然简单,但非常机械。

于是我开发了一个 活动开发 CLI 工具

只需要在指定目录(src/views)下新建 .vue 文件:

mkdir src/views/activities/spring-2026
touch src/views/activities/newActivity/spring-2026.vue

CLI 就会自动生成完整的活动开发骨架:

src/views/activities/spring-2026     
                      ├ index.vue    
                      ├ index.less   
                      ├ api.ts       
                      ├ components/  
                      ├ types.ts     

同时自动写入:

  • 页面容器结构
  • 基础样式
  • 常用组件引用
  • API 模板
  • 类型定义

这样,原本需要复制和手动准备的工作,现在只需要几秒。

这个 CLI 工具大大减少了重复、机械且低价值的劳动,同时解决了在新活动开发时因为人工操作而出现低级错误的问题。

而在活动开发这种节奏很快的业务中,减少低级错误其实比单纯提升速度更重要。

image.png

image.png

三、第二阶段:组件复用探索

当 CLI 解决了大部分初始化问题后,我开始思考另一个问题:

能不能进一步减少 UI 开发的工作量?

最先想到的方案是:组件复用

例如,活动页面中最常见的 UI 之一就是弹窗。几乎每个活动都会有:

  • 规则弹窗
  • 奖励弹窗
  • 排行榜弹窗
  • 任务弹窗

于是我尝试封装一个通用弹窗组件,例如:

<BasePopup 
  titleImg="" 
  :show="true"
  closeBtn
  @refresh=""
  ...
/>

统一了遮罩层样式、弹窗标题的位置、插槽等

我希望后续活动中的弹窗都尽量基于这个组件来实现。

四、现实问题:活动页面 UI 高度定制

然而很快我就发现,这种抽象方式并不理想。

因为活动弹窗通常是高度定制的,例如:

  • 背景图不同
  • 边框样式不同
  • 标题结构不同
  • 按钮位置不同
  • 内容布局不同

为了适配这些差异,组件的 props 变得越来越多,例如:

titleImage
backgroundImage
showCloseButton
buttonLayout
contentType

组件内部也开始出现大量判断逻辑:

if(type === 'reward') ...
if(type === 'rule') ...

最终结果是:

  • 组件越来越复杂
  • 可读性越来越差
  • 维护成本越来越高

这时我意识到一个问题:

为了适配多个活动而统一弹窗组件的收益其实并不大。

五、一个重要的工程经验:重复 ≠ 适合抽象

这次尝试让我意识到一个重要的工程原则:

不是所有重复代码都适合抽象。

抽象通常需要满足两个条件:

稳定
变化少

而活动 UI 的特点恰恰是:

视觉变化非常大

也就是说,虽然“弹窗”这个概念是重复的,但它的视觉结构和布局却经常变化。

因此,强行做统一组件往往会适得其反。

六、第三阶段:思考低代码方案

当组件复用的方案不理想时,我开始思考另一条路线:

低代码平台。

也就是通过 JSON 配置来生成页面,例如:

{
  "type": "popup",
  "title": "活动规则",
  "content": "..."
}

这种方案在一些后台系统中非常常见。

但在实际分析后,我发现低代码也存在明显问题。

七、低代码的局限性

低代码通常适合:

展示型页面

例如:

  • 表单页面
  • 信息展示页面
  • 管理后台页面

这些页面UI和业务逻辑相对更稳定,但活动页面往往包含大量定制的UI和负责特定玩法业务逻辑,例如:

  • 接口请求
  • 状态控制
  • 倒计时
  • 任务流程
  • 奖励领取
  • 条件判断

这些逻辑如果用 JSON 描述,会变得非常复杂,反而需要抽出精力来维护配置JSON Schema。

例如:

visibleIf:
  status == "done" && userLevel > 3

随着逻辑增加,配置会越来越难维护。

因此我得出了一个结论:

低代码并不一定适合 H5 活动开发。

八、重新审视问题:真正重复的是什么?

在经历了组件抽象和低代码尝试之后,我重新审视了整个开发流程。

这时我才意识到一个关键问题:

我一直在优化“组件开发”,但真正耗时间的其实是“设计稿还原”。

例如:

  • 搭页面布局
  • 写 position 定位
  • 下载图片资源上传oss
  • 调整尺寸
  • 处理滚动区域

这些工作通常:

机械
重复
耗时

于是我开始思考:

能不能从设计稿自动生成页面骨架?

九、设计稿自动化的探索

最直觉的方案是:

Figma 插件。

通过读取设计稿结构,自动生成代码。

但对于工具开发来说,一个很重要的判断标准是:

工具本身的复杂度不能超过要解决的问题。

  • 插件开发成本高
  • 需要设计师配合
  • 设计稿结构必须规范
  • 维护成本较高

对于活动开发这种快节奏来说,可能不是最合适的选择。

十、当前方案:工程自动化 + 半自动 UI

经过一系列尝试后,我最终形成了一套比较现实的开发流程:

CLI 自动生成活动骨架
↓
优先开发活动内高频使用的组件
↓
快速搭建 UI
↓
补充业务逻辑

通过这种方式,活动开发效率已经明显提升。

活动的开发周期已经从:7-10 天 → 5 天


十一、未来可能的优化方向

虽然现在的流程已经比较高效,但仍然有进一步优化的空间。

未来可以探索几个方向。


1. UI 骨架生成工具

设计稿 → 页面骨架代码。

例如:

  • 自动生成布局结构
  • 自动填充图片资源
  • 自动生成定位样式

开发者再进行调整。


2. 活动视觉模板库

沉淀常见活动模式,例如:

  • 规则弹窗模板
  • 奖励弹窗模板
  • 排行榜弹窗模板
  • 任务弹窗模板

减少 UI 重复开发。


3. 设计稿辅助工具

而不是完全自动生成页面。

例如:

设计稿 → 代码草稿

开发者再进行修改。


十二、总结

这次工程优化让我学到一件非常重要的事情:

工程优化的关键不是技术,而是找到真正的重复劳动。

在 H5 活动开发中:最适合自动化的不是 UI 组件而是开发流程

通过:CLI + 模板 + 流程优化 就可以显著提升开发效率。

很多时候,我们在讨论工程化时,容易第一时间想到的是:

  • 微前端
  • 低代码平台
  • 大型框架

但回过头来看,这次优化给我最大的启发其实很简单:

不是所有重复都值得抽象,不是所有问题都需要平台化解决。
很多时候,先把真正重复的流程自动化,就已经能带来非常明显的效率提升。

对于具体业务来说,最有效的工程优化往往来自一些很小的工具。
有时候: 一个简单的 CLI,可能比一个复杂的平台更有价值。

如果你也在做活动类业务,欢迎交流你们是怎么做提效的。