Skip to content
Go back

用阿里飞冰 ICE 构建广告配置后台

广告配置后台很少只是一个增删改查页面。一条广告计划可能包含素材、投放位置、时间范围、落地页、定向信息和上线状态,运营人员还需要随时筛选、查看、调整和终止投放。

这类系统使用阿里飞冰 ICE 作为 React 后台项目基础,可以快速建立布局、路由和常用管理页面结构。框架提供的是工程起点,而业务能否长期维护,仍取决于列表、表单和状态流转是否有清晰边界。

管理后台先围绕任务组织页面

广告管理通常包含几类主要任务:

查询:按广告位、状态、时间和关键词定位计划创建:填写素材、投放策略和承接页面审核或上线:检查数据后改变计划状态调整:修改时间、素材或配置监控:查看当前运行状态和异常信息

因此页面结构可以按任务划分,而不是把所有操作堆在一个表格中:

广告计划列表页  -> 查询区域  -> 表格和批量操作  -> 新建/编辑抽屉  -> 详情与操作记录

ICE 项目中,布局和基础页面模板能够保持统一;具体广告业务模块则使用 React 组件继续分层。

查询状态和编辑状态不要混在一起

列表查询参数会影响当前数据集,编辑表单只影响一条计划的草稿。如果二者使用同一组页面状态,关闭编辑弹层时容易错误重置列表,或者刷新列表时把尚未提交的输入覆盖。

function AdPlanPage() {  const [query, setQuery] = React.useState({    keyword: "",    positionId: "",    status: "",    page: 1  });  const [editingId, setEditingId] = React.useState(null);  const [editorVisible, setEditorVisible] = React.useState(false);  return (    <Page>      <AdQueryForm value={query} onSearch={setQuery} />      <AdPlanTable query={query} onEdit={id => {        setEditingId(id);        setEditorVisible(true);      }} />      <AdPlanEditor        id={editingId}        visible={editorVisible}        onClose={() => setEditorVisible(false)}      />    </Page>  );}

列表页只保存“正在查看什么”;编辑器负责“正在修改什么”。保存成功后再通知列表刷新,这样页面关系更容易理解。

表单的复杂度来自业务约束

广告计划中的字段通常不是彼此独立的:

可以将校验分成基础校验与业务校验:

function validatePlan(form) {  const errors = {};  if (!form.name) errors.name = "请输入计划名称";  if (!form.materialId) errors.materialId = "请选择素材";  if (form.startTime >= form.endTime) {    errors.endTime = "结束时间需要晚于开始时间";  }  if (form.renderType === "lynx" && !form.lynxPageId) {    errors.lynxPageId = "请选择 Lynx 页面";  }  return errors;}

基础表单组件可以通用,具体约束则应留在广告计划领域内部,而不是散落在页面点击事件中。

状态变更应被看作流程操作

上线、下线和暂停不是简单改一个字段。操作前可能需要校验计划完整性,操作后需要刷新列表、记录失败原因,并避免用户重复提交。

async function changePlanStatus(planId, nextStatus) {  setSubmitting(planId);  try {    await adService.changeStatus(planId, nextStatus);    message.success("状态已更新");    reloadList();  } catch (error) {    message.error(error.message || "操作失败,请重试");  } finally {    setSubmitting(null);  }}

将状态操作封装成单独能力,能够让表格、详情页甚至批量操作复用相同规则。

从早期后台页面到 React 后台框架

早期使用 AngularJS 开发配置后台时,控制器、服务和指令已经能够组织数据驱动页面。到了 React 与 ICE 的项目中,变化不仅是框架语法:

框架不会自动解决广告业务的复杂性,但它能够把重复的基础工作固定下来,让开发重心回到投放状态、配置约束和操作可靠性这些真正影响业务的问题上。


Share this post on: