从 0 搭建 uni-app 多端项目的目录结构

一套 uni-app 代码要同时跑在小程序和 App 上,目录结构直接决定后期改动成本。本文给出一套可落地的分层方案:按「变更频率」而非「文件类型」组织目录。

从 0 搭建 uni-app 多端项目的目录结构

分层的依据:按变更频率,而不是按文件类型

很多项目的目录是「按文件类型」堆出来的:所有 js 放一起,所有组件放一起。项目小时没问题,一旦要同时面向微信、抖音和 App,就会出现「改一个端、三个端都得重新验证」的局面。

更稳的做法是按变更频率分层:越靠下的层越稳定,越靠上的层越易变。稳定层被多个端共享,易变层承载端差异,这样大部分改动被限制在局部,不会产生跨端连锁回归。

目录骨架

src/
├── pages/           页面,按业务域分子目录(如 home、post、user)
├── components/      跨页面复用组件
├── api/             接口定义与请求封装
├── store/           全局状态
├── utils/           纯函数与工具(含平台网关)
├── config/          多环境配置
├── static/          图片、字体等静态资源
└── App.vue / main.js

页面按业务域划分,而不是按端划分。端差异不体现在目录上,而体现在文件内的条件编译块与 utils/platform 网关里——这是控制目录膨胀的关键。

公共层如何组织,避免循环依赖

公共层最容易失控的是相互引用。约束方式非常简单:依赖只能单向向下。

  • api 只依赖 utils 与 config,不反向依赖页面或组件;
  • utils 是叶子层,不依赖 store、api、components;
  • components 可以依赖 api、utils,但不依赖 pages;
  • store 可以依赖 api、utils,但不依赖 pages 与 components。

一旦出现「组件去读页面数据」的需求,说明这段状态应该上提到 store,而不是让组件反向依赖页面。此外,跨页面的公共逻辑优先抽成 utils 里的纯函数,纯函数没有副作用,天然易测。

条件编译文件放哪里

条件编译是 uni-app 处理端差异的主要手段,但写法需要有统一约定,否则会散落各处:

  • 平台专属组件:放在组件目录内,文件名后缀标识平台(如 xxx.mp-weixin.vue),并在同目录 README 中说明用途;
  • 平台专属逻辑:抽到 utils/platform/ 下,函数内部用 // #ifdef MP-WEIXIN 之类的注释块包裹,对外暴露统一函数名;
  • 平台专属页面配置:统一写在 pages.json 对应页面的条件编译块中,不要散落到业务代码。

原则是:端差异集中在少数几个文件里,页面层保持「不知道有几个端」。

多环境配置的命名约定

配置建议拆为 config/dev.js、config/test.js、config/prod.js,再由 config/index.js 按编译环境统一导出。业务代码只 import config from '@/config',不直接引用具体环境文件。这样切换环境只改构建配置,不动业务代码。

小结

目录结构的本质是把「经常改的」和「很少改的」分开。稳定层向下沉淀、易变层向上收敛、端差异集中隔离,这套结构在后续接入新端时,改动范围可以被控制在 utils/platform 与配置文件之内,而不需要翻遍整个工程。

本内容观点仅代表作者本人观点立场,欣文网平台只做信息内容展示和存储。发布作者:欣文网,转载请注明出处:https://www.xinenw.com/56988.html

赞 (0)
我们为什么重做团队官网:技术选型与取舍
上一篇 2026年11月14日 12:36
站点二次开发最常见的 8 个坑
下一篇 2026年11月14日 12:36

相关推荐

  • 我们为什么重做团队官网:技术选型与取舍

    官网重做常被当成一次视觉翻新,但对以内容运营为主的团队站而言,真正的难点在选型。本文复盘我们重做团队官网的动因,说明为何坚持「内容模型先行」的路线。

    2026年11月14日
    700
  • 小程序多端适配:微信/抖音/App 一套代码的坑

    uni-app 让「一套代码多端运行」成为可能,但真正做到差异可控,靠的不是写完就编译,而是把差异隔离干净。本文盘点微信、抖音小程序与 App 三端的关键差异及隔离做法。

    2026年11月14日
    400
  • WordPress 会员体系与支付接入实践

    会员与支付是内容站点从「展示」走向「经营」的两块基石。本文从边界划分入手,讨论 WordPress 场景下会员体系该自研还是选用成熟插件、支付接入的常见坑。

    2026年11月14日
    300
  • 社区产品的用户增长与留存设计

    社区产品的核心矛盾不是「拉新难」,而是「拉来的人不说话、说了话的人不再回来」。本文从冷启动、留存机制与指标口径三个方面展开,说明如何让第一批用户留下来。

    2026年11月14日
    300
  • 前端交互中的心理学:如何设计引导

    优秀的界面引导不靠「提示弹窗堆叠」,而靠对人认知习惯的顺应。本文把可用性心理学中可直接落地的几条原理转化为工程方法:用视觉层级控制注意力、用默认值引导行为。

    2026年11月14日
    500

发表回复

登录后才能评论

联系我们

在线咨询: 微信交谈

邮件A:xinenw@qq.com

邮箱B:xinenw@163.com

工作时间:周一至周五,8:30-23:30;周六周日10:30-18:30;节假日休息

关注微信