Nonmotor 前端开发入门:从需求到交付#
正式阅读稿见 Nonmotor 前端开发指南。本文件保留分享时长、演示安排和备课建议。
面向后端工程师的分享编排稿。目标:听完后能够定位代码、判断改动方式,并在评审支持下完成一个小型前端需求。
依据:用户提供的《admin后端开发流程》页面 HTML,以及 nonmotor_h5 当前工作区源码。核对日期:2026-10-09。本文是培训设计,示例需求尚未实施,本地启动和部署步骤尚未实跑。
1. 编排思路#
沿用参考文档的「项目介绍、环境搭建、开发流程、部署、配套工具」骨架,把最多时间放在一个需求如何完成。
建议采用两层材料:
- 分享主线:60 分钟讲解与演示,围绕一个小需求走完闭环,另留 15 分钟答疑。
- 配套手册:环境安装、命令、平台入口、分支约定、排障清单和基础语法,供实际开发时查阅。
开场可直接使用:
这次分享面向已经熟悉保险后端业务的同学。我们从一个投保页需求出发,看它如何落到 Journey 配置、React 页面、接口和数据流,再完成联调、自测和提测。学完之后,希望大家能够接下一个范围明确的小需求,并知道哪些地方需要进一步评审。
完成培训的可观察目标:给定市场、产品和页面 URL,学员能找到入口;能判断修改配置还是代码;能追踪一个字段从展示到请求的路径;能提交包含验证证据和发布物料的 MR。
2. 分享顺序与时间#
| 章节 | 时间 | 学员要回答的问题 | 推荐展示材料 |
|---|---|---|---|
| 认识业务与系统边界 | 5 分钟 | nonmotor 在整条投保链路中负责什么? | 产品详情 → 投保信息 → 确认 → 收银台的页面截图 |
| 从 URL 找到代码 | 7 分钟 | 我拿到页面后,第一份代码在哪里? | 市场入口配置、index.tsx、App.tsx、一次接口调用 |
| 跑起目标页面 | 6 分钟 | 如何确保自己在改正确的市场、应用和环境? | 一次启动演示、目标 URL、Network 面板 |
| 需求分析与方案选择 | 8 分钟 | 改配置、复用组件,还是新增能力? | 需求分类表、字段与接口矩阵 |
| 一个小需求的完整实现 | 18 分钟 | 每一步具体改哪里,如何证明正确? | Journey 前后差异、代码差异、请求体与页面效果 |
| 联调、自测与排障 | 7 分钟 | 页面有问题时如何逐层定位? | Network、Console、配置与缓存检查 |
| 提测、发布与上线检查 | 5 分钟 | 除了代码,还有哪些东西要交付? | MR、测试证据、翻译/图片/Journey 发布清单 |
| AI 协作与第一个练习 | 4 分钟 | 如何借助现有工具接下一个需求? | 完整输入示例、练习验收要求 |
3. 各章节展开方式#
3.1 认识业务与系统边界#
先展示一条目标产品的实际链路,讲清每页输入、输出与用户操作。以当前仓库已有的 Factory V2 路径为讲解候选:PDP → Purchase → Confirmation → Checkout;实际顺序和步骤以演示产品为准。
重点解释:
- 页面负责交互、展示、输入校验、临时状态和接口调用;最终业务合法性仍由后端校验。
- 页面运行在浏览器或 App WebView,登录、返回、打开页面等能力通过项目 Bridge 与宿主交互。
- 当前是多入口多页面工程,先从 HTML 入口找对应代码。页面内部是否有步骤切换,再看具体实现。
- 同一套页面组件可以服务多个市场、产品;最终页面同时受代码、Journey、翻译、接口数据和环境影响。
用后端熟悉的职责作对照,避免机械套用后端分层名称:
| 后端已有认知 | 前端需要建立的认知 |
|---|---|
| 请求入口 | HTML entry / index.tsx 是页面启动入口,用户事件会触发后续处理 |
| 业务编排 | App、业务组件和 Hook 组织页面状态及交互,不是一条只执行一次的请求链 |
| 下游客户端 | service/model 封装接口,通过统一 request 发出请求 |
| 配置中心 | PFC 和 Journey 等配置参与页面行为;Journey 还能决定页面有哪些区块与字段 |
| 请求上下文 | props、state、Context 与页面缓存各有生命周期,不能当作同一种存储 |
| 服务日志 | Console、Network、IDAP 与后端请求日志共同构成排查依据 |
3.2 从 URL 找到代码#
现场追踪一个市场的真实入口,例如 MY 的 purchase5:
- 在
config/nonmotor/my.json找到purchase5.html,通过 chunks 找到 entry。 - entry 指向
src/pages/factoryV2/purchase5/index.tsx。 - index.tsx 挂载 BaseComponent 和 App,并初始化页面埋点。
App.tsx请求 Journey,按 block/组件名组织页面与步骤。- 沿 import 找到 model、组件、表单与缓存处理,再在 Network 核对实际响应。
只介绍日常定位需要的目录:
| 位置 | 什么时候查 |
|---|---|
config/nonmotor/{region}.json |
找目标市场的页面入口、新增入口 |
src/pages/factory/、src/pages/factoryV2/ |
找产品工厂页面与业务组件;以入口引用确定版本 |
src/pages/checkoutV2/ |
查收银台相关实现 |
src/service/、页面内 model/ 或 service/ |
查请求封装、类型和响应转换 |
src/common/request.ts |
查公共请求行为 |
src/InsEntry/ |
查动态表单、字段及校验能力 |
src/MoneeDesign/、src/components/ |
查现有 UI 控件和业务组件 |
src/bridge/、src/locales/ |
查宿主交互和国际化 |
runbooks/、docs/automation/ |
查现有回归用例、执行规则和证据要求 |
注意:仓库仍包含历史 ins_h5 名称和其他业务目录,目录存在并不代表它属于当前 nonmotor 构建。以 APP_NAME、REGION 和入口配置共同确定范围。
3.3 跑起目标页面#
配套手册列明仓库权限、公司 npm 源、网络、测试账号、目标产品、有效页面参数以及本地联调方式。
已核对的入口:
.nvmrc当前为v20;旧 package.json 的最低版本声明不能作为完整安装指南。- 依赖安装脚本使用
npm install --registry https://npm.shopee.io --legacy-peer-deps。 npm run dev打开交互菜单,选择开发、目标环境、目标市场、服务nonmotor和适用构建环境。- 启动后使用该市场已登记的页面和完整业务参数验证,不把服务启动成功当作业务页面验证通过。
现场要证明:页面能展示、接口请求打到预期环境、目标产品正确、登录态可用。需要 PFB 时还应验证请求确实进入目标后端分支;单纯设置前端 ENV 不足以证明后端 PFB 正确。
正式文档已补充 ZeroOmega → Whistle → 本地开发服务的代理链路、安装与证书步骤、市场规则和验收方式。分享时重点演示原业务域名加载本地代码,以及 API 经开发代理请求后端的区别;TH/SG/PH 的浏览器域名与源码 API 目标差异需实测确认。登录与 PFB 操作仍待补齐。浏览器演示之后,涉及 App 能力的需求仍需在目标 WebView 验证。
iOS 模拟器的安装步骤已补入正式文档第 2.10 节:安装 Xcode/runtime → 启动 Simulator → 获取对应市场的 Simulator App 包 → 解压安装 → 开启系统代理并配置信任证书 → 验证 App 内 H5。强调 Chrome 插件代理与模拟器系统代理的区别,以及调试后恢复代理设置。
3.4 拿到需求,先判断改动落点#
先确认市场、产品、入口、PRD、设计稿、接口协议、异常分支与验收标准。需求分析的交付物是一张影响清单。
| 需求类型 | 先检查 | 可能交付物 |
|---|---|---|
| 文案、图片、显隐和已有校验变化 | Journey、翻译和已有组件是否支持 | Journey / i18n / 图片资源及验证证据 |
| 已有字段或交互调整 | 当前字段配置、组件能力、缓存和接口映射 | 配置和必要代码改动 |
| 新业务区块或新交互能力 | 能否复用业务组件或 MoneeDesign;是否需要扩展表单能力 | 新增或扩展组件、配置接入与回归清单 |
| 新页面或新投保步骤 | 能否复用现有模板;入口、返回路径、状态传递是否完整 | 页面、入口配置、导航、缓存契约与埋点 |
| 接口字段变化 | 请求/响应类型、业务码、空值和展示规则 | 接口封装、数据转换与消费方调整 |
特别讲清:是否“只改配置”取决于现有能力。配置无法表达的新行为,需要代码支持;新增接口字段也可能同时影响确认页、报价和创单。
3.5 贯穿案例:投保信息新增一个字段#
这是教学案例,具体字段和产品待选择。优先挑已有产品中范围小、能体现校验与数据传递的改动。
按七步演示,每步都展示一份产物:
- 拆需求:字段何时显示、是否必填、是否预填、如何报错、确认页如何展示、后端如何接收。
- 查已有能力:找到该产品 Journey 与对应组件,判断配置是否足够。
- 列字段矩阵:对齐 UI 文案、entry name、field_name、缓存路径、请求字段、类型、空值策略和展示格式。
- 实现:先复用字段组件和校验;确需扩展时,说明组件、页面、service 各自负责什么。展示修改前后差异。
- 闭合数据流:输入 → 校验 → 当前步骤写缓存 → 下一页读缓存 → 确认展示 → 最终请求,逐点核对。
- 验证:正确输入、空值、错误格式、返回修改、接口异常,以及其他复用产品的影响。
- 交付:提交代码/配置差异、截图、请求核对结果、回归范围和发布依赖。
现场字段矩阵模板:
| UI 字段 | Journey 标识 | 表单字段 | 缓存路径 | 接口字段/类型 | 确认页展示 | 校验与空值策略 |
|---|---|---|---|---|---|---|
| 演示字段 | 从实际配置填写 | 从运行时表单核对 | 从步骤实现核对 | 从接口协议核对 | 从设计和 formatter 核对 | 从 PRD 和契约核对 |
当前 Journey 规范强调:Admin/O 端配置源是事实来源,可读 view 从它生成,本地 mock 从 view 生成;各步骤在本环节完成缓存读取、校验、转换和写回。正式讲稿应使用这一约定,避免把历史独立 mock 快照教成新的默认流程。
在这一步穿插最少的前端知识:TypeScript 对象和可选值、组件与 props、state 驱动渲染、事件、Effect 的依赖与清理、异步请求和 SCSS 布局。结合案例说明,不展开语言大全。
3.6 联调、自测与排障#
采用固定定位顺序:
- 页面入口是否正确:APP_NAME、REGION、HTML 与产品参数。
- 资源是否正常:页面加载、JS/CSS、Console 错误。
- 请求是否正确:实际 URL、参数、登录态、环境/PFB、HTTP 状态及业务码。
- 数据是否正确:响应、Journey、翻译、组件注册、显隐和校验依赖。
- 状态是否正确:表单值、缓存、上一步返回与再次进入。
- 宿主行为是否正确:App 返回、页面跳转、支付等目标运行环境行为。
给学员一张提交前检查表:目标市场构建、类型与定向 lint/格式检查、需求验收路径、失败状态、返回/重进、公共组件受影响产品、移动端视觉和埋点。按仓库约定,不把新增前端单测文件作为默认交付要求;保留并按需执行已有相关测试。
展示现有 Runbook 能提供的步骤和证据。执行自动化时按 runbooks/index.json 的 executionOwner 选择执行链,遵守各自 session 和产物边界。
3.7 提测、发布与上线检查#
复用后端同学熟悉的「代码 + 配套物料」表达,交付内容包括:
- MR:需求、改动范围、涉及市场/产品、验证结果。
- 配套物料:Journey、i18n、图片 CDN、PFC 配置和后端接口依赖,明确适用范围及先后顺序。
- QA 交接:入口、环境、账号获取方式、场景、预期和已知限制;不把凭证写进文档或仓库。
- 发布核对:前端包、配置和接口版本兼容;回退时同时考虑代码与配置的配套关系。
- 上线检查:目标页面、主链路、错误监控及关键行为数据。
源码能确认 nonmotor 有独立部署模块,构建读取 REGION/环境,产物目录为 dist/nonmotor,部署入口使用 /nonmotor/。因此必须说明市场维度,不能照搬参考后端文档中的“按机房部署一次覆盖全部市场”。
团队已确认:Casement 建立 release-v1.x.xxx 迭代,本地在 dev-v1.x.xxx 分支开发、提交 commit 和自测;完成后提交 MR 合入同版本 release,合入并发布后到 Casement 部署对应版本。分享时用正式文档中的 Casement 截图展示应用、迭代、环境、Region、版本/PFB 与部署状态的核对。Reviewer、部署负责人和审批细则仍待补充。
3.8 AI 协作与上手练习#
将 AI 放在上述开发步骤中,演示如何提供充分上下文和核验结果。
推荐输入包含:市场、环境、应用、产品与页面、PRD/设计、接口契约、当前 Journey、可复用页面、验收标准和允许改动范围。输出要求包含:配置/代码判断、影响文件、实施结果、验证证据、剩余不确定项。
仓库已有需求分析、TD、代码生成、Journey 配置同步、UI 验证、mock、Runbook 和 Code Review 等 Skills。主讲时仅展示案例实际需要的能力,其余放工具索引。编码前需按 AGENTS.md 加载完整工程规范,AI 生成结果仍需开发者核验业务语义和运行效果。
建议逐级练习:
- 修改已有文案或受支持的字段配置,完成展示验证。
- 增加一个字段或简单交互,完成接口与回退路径验证。
- 承接一个小型业务区块,完成实现、回归、MR 与提测物料。
4. 正式文档目录建议#
- Nonmotor 业务范围与系统架构
- 项目环境搭建
- 项目启动与第一个页面
- 项目结构与代码定位
- 分支规范与需求开发流程
- 产品工厂 Journey 与配置开发
- 页面、组件和接口开发规范
- 需求实战:新增投保字段
- 联调、自测与问题排查
- 提测、部署与发布物料
- 常用平台与 AI 工具
- 前端基础知识速查和常见问题
5. 分享前需要补齐的材料#
- 选定一个可演示产品:市场、产品 ID、完整入口、设计截图和可复现环境。
- 选定一份小型历史 MR 或准备教学改动,保证课堂上能展示明确的前后对照。
- 在干净环境验证 Node、依赖、登录、代理、页面启动和 PFB 步骤。
- 分支命名、MR 方向和 Casement 部署流程已确认;补齐 Reviewer、部署负责人、审批与版本/Tag 生成操作。
- 补齐目标团队可访问的 Journey、Transify、TMS、IDAP、部署平台入口与权限申请方式。
6. 本次核对的依据#
- 参考文档:用户提供的《admin后端开发流程》HTML;原页面为 https://confluence.shopee.io/pages/viewpage.action?pageId=3269507138 。本次未依赖该页面中的其他外链。
- 运行与构建:
.nvmrc、package.json、scripts/prompt.js、config/bizConfig.js、config/paths.js。 - 入口与部署:
config/nonmotor/my.json、其他市场 nonmotor 配置、deploy/nonmotor.json、deploy/space_build.sh、deploy/space_install.sh。 - 页面链路:
src/pages/factoryV2/purchase5/index.tsx、App.tsx、src/pages/factory/model/queryProductFactoryJourney.ts。 - 迁移边界:
src/common/nonmotor.ts、src/common/request.ts;旧页面与 API 的改写受迁移白名单控制,不能假定所有旧地址都自动迁移。 - 工程约定:项目内 project-conventions、service-development、journey-development、monee-design、code-quality 等 Skill 与引用资料。
本稿只创建培训编排文档,未修改源码,未执行发布或真实业务操作。