本文档用于说明当前项目在 结果页、文创内容页、客户定制体验页 上的长期承载方案。
核心结论:
不做“原生还是 H5 二选一”,而是采用三层混合方案:
当前阶段已经进一步定案:
当前项目已经确认:
如果全部原生写死:
如果全部交给 H5:
因此最适合的方案是:
核心高频体验保留原生,灵活变化部分分层处理。
建议未来的体验承载层分成三层:
用于承接:
特点:
用于承接:
特点:
用于承接:
特点:
示例:
示例:
原生必须继续负责:
H5 不应该负责:
H5 只负责:
无论 H5 是否接入,原生都必须保证:
真机验证后,当前项目已经明确:
web-view 不适合作为“原生弹窗里的局部 H5 内容区”因此这条边界正式定为:
建议统一做成:
游戏状态 / 内容数据 / 结果数据
↓
ViewModel
↓
Native Template / Native DSL / H5
↓
用户界面
这里最关键的是:
也就是:
先稳定 ViewModel,再让模板与承载方式变化。
当前内容体验链已经调整成:
控制点触发
↓
原生内容卡(template)
↓
CTA: 查看详情(可选)
↓
H5 详情页 / 互动任务页
ViewModel 是原生模板、原生 DSL、H5 都共用的中间层。
例如结果页:
{
"type": "result-summary",
"title": "比赛结束",
"subtitle": "校园积分赛",
"hero": {
"label": "总分",
"value": "120"
},
"stats": [
{ "key": "duration", "label": "用时", "value": "23:18" },
{ "key": "distance", "label": "里程", "value": "3.2km" },
{ "key": "controls", "label": "完成点", "value": "8/8" }
],
"actions": [
{ "key": "restart", "label": "再来一局" },
{ "key": "close", "label": "返回地图" }
]
}
例如内容页:
{
"type": "content-card",
"title": "湖边步道",
"body": "这里适合短暂停留观察周边地形。",
"image": "",
"cta": "继续"
}
这样以后无论:
都可以消费同一份结构化数据。
建议先做有限几个模板:
result-minimalresult-richcontent-card-minimalcontent-card-story模板负责:
模板不负责:
不要做万能布局引擎,只做有限区块编排。
例如结果页:
{
"templateType": "result-native-dsl",
"sections": [
{
"type": "hero",
"field": "score"
},
{
"type": "stats-grid",
"fields": ["duration", "distance", "controls"]
},
{
"type": "actions",
"items": ["restart", "close"]
}
]
}
例如内容页:
{
"templateType": "content-native-dsl",
"sections": [
{ "type": "title" },
{ "type": "body" },
{ "type": "image" },
{ "type": "actions", "items": ["continue", "openH5"] }
]
}
原则是:
H5 主要用于高自由度需求。
建议先只承接两类页面:
用于:
用于:
但要注意:
不建议直接跳到 H5 大量实现。
推荐顺序:
先把原生模板层打稳:
再做原生有限 DSL:
最后再把 H5 扩展层接稳:
结合当前项目现状,建议:
最适合当前项目的长期方案不是单押 H5,也不是所有东西都原生写死,而是:
原生模板保底、原生有限 DSL 承担中度变化、H5 承担高定制内容。
这三层结合起来,既能保证核心体验稳定,也能承接客户高频变化需求。