为什么模板定制总在返工
很多团队拿到 uni-app 模板后,直接改 pages 里的样式和文案,结果新增页面时发现组件耦合严重,改一处崩三处。问题不在 uni-app,而在定制策略没有分层。
第一层:主题变量定制
这是成本最低的定制。uni-app 生态里多数模板基于 SCSS 变量或 CSS 自定义属性控制颜色、圆角、间距。
优先修改 uni.scss 或 static/css/variables.scss,不要直接改组件内部样式。把品牌色、按钮高度、卡片圆角抽成变量后,换肤只需替换一个文件。如果模板用的是 UI 库(如 uView、uni-ui),先查它的主题配置入口,再动手。
第二层:布局插槽定制
模板的头部、底部 tabbar、侧边栏通常有插槽或配置项。定制时遵循“能配置不覆盖,能插槽不重写”。
例如自定义导航栏,优先用 pages.json 的 navigationStyle 配合自定义组件,而不是全局隐藏原生导航后再硬编码。插槽定制的好处是模板升级时冲突少,合并成本低。
第三层:页面骨架替换
当业务形态与模板差异大时,需要替换页面骨架。建议保留模板的目录结构和路由约定,只替换 pages 下的业务页面,同时把公共逻辑抽到 mixins 或 composables。
替换骨架时注意三点:条件编译指令(#ifdef)要保留,否则多端会出问题;manifest.json 的权限配置别漏;静态资源路径用 @/static 而非相对路径。
工程化建议
把定制内容单独放在 custom 目录,通过别名引入,与模板源码隔离。这样模板更新时只需对比 custom 之外的变更。
版本管理上,给模板建一个上游分支,定制内容走业务分支,定期 rebase。别在模板源码里直接提交业务代码。
什么情况该放弃定制
如果模板的组件粒度与业务差距超过三层,或模板已停止维护,重写比定制更划算。定制的前提是模板架构清晰、依赖活跃,否则越改越重。

