用途:为 Expo/React Native 应用提供一套可强制执行的项目结构模式,避免路由文件臃肿、业务逻辑分散。
主要能力:规定 app/ 目录仅作路由层,负责把 URL 映射到屏幕;所有业务逻辑放在 features/ 下,每个功能域一个文件夹;共享代码放在顶层目录。依赖方向单向:app/ → features/ → components/、lib/、hooks/、constants/、types/、providers/。共享代码绝不能反向导入 features/,这是最关键规则;跨功能导入只能经由 index.ts。
目录约定:app/ 含 (tabs)/、(auth)/ 等路由组及 _layout.tsx;features/<name>/ 下按需创建 components/、hooks/、api/、utils/、store/、types.ts,且必须有 index.ts 作为公共 API。共享 UI 放 components/ui/ 与 components/layout/,全局工具放 lib/、hooks/、constants/、types/、providers/、assets/。
使用方式:路由文件保持极薄,只导入并渲染功能屏幕,例如从 @/features/home 导入 HomeScreen;数据获取、业务逻辑、复杂组件树、状态管理都不应出现在路由文件中。其他代码只能从 @/features/home 导入,不能深入其子路径。Expo Router 约定包括每个路由组必须有 _layout.tsx,() 分组不影响 URL,index.tsx 为默认路由,[id].tsx 为动态参数,[...rest].tsx 为捕获全部,modal.tsx 为模态,+not-found.tsx 处理 404;可在 app/_layout.tsx 用 unstable_settings 设置 anchor 初始路由组。文件命名统一 kebab-case,测试文件与源码同目录。
适用场景:中大型 Expo/React Native 项目、多人协作、需要清晰边界与可维护性的移动应用。
限制:资料未提供具体安装命令、版本要求、性能数据或收费信息;该模式为结构约定,需团队自觉遵守,未提及自动化校验工具。