CLAUDE.md@by-framework/uni-app · git:20260320.fcf2609 · 2026-03-20 · sha256 73e4fd2515dbd685
CLAUDE.md@by-framework/uni-app git:20260320.fcf2609B
Immutable. This exact content is served forever at /api/v1/blob/73e4fd2515dbd685.
# uni-app 跨端项目 ## 技术栈 - uni-app + Vue 3 Composition API + TypeScript - 目标平台:微信小程序、H5、App(Android/iOS) - 状态管理:Pinia - UI 框架:uni-ui 或 uView Plus ## 项目结构 ``` src/ pages/ # 页面,须在 pages.json 中注册 components/ # 可复用组件(easycom 自动导入) composables/ # 组合式函数 stores/ # Pinia store static/ # 静态资源(会被打包进产物) uni_modules/ # uni-app 插件模块 pages.json # 路由和页面配置(核心配置文件) manifest.json # 应用配置(appid、权限、SDK 配置等) ``` ## 条件编译 - 使用 `#ifdef` / `#ifndef` / `#endif` 实现平台差异化代码 - JS 中:`// #ifdef MP-WEIXIN` ... `// #endif` - 模板中:`<!-- #ifdef H5 -->` ... `<!-- #endif -->` - CSS 中:`/* #ifdef APP-PLUS */` ... `/* #endif */` - 常用平台标识:`MP-WEIXIN`(微信小程序)、`H5`、`APP-PLUS`(App) ## 开发规范 - 使用 Vue 3 `<script setup lang="ts">` 语法 - 页面生命周期用 uni-app 专用钩子:`onLoad`、`onShow`、`onReady`、`onHide` - 组件生命周期正常使用 Vue 的 `onMounted`、`onUnmounted` 等 - 路由跳转用 `uni.navigateTo`、`uni.redirectTo`、`uni.switchTab` - 网络请求用 `uni.request`,或封装统一的请求工具函数 - 存储使用 `uni.setStorageSync` / `uni.getStorageSync` ## 多端兼容注意事项 - 小程序不支持 DOM 操作,禁止使用 `document`、`window` 等浏览器 API - 小程序包大小限制 2MB(主包),超出需配置分包 `subPackages` - CSS 用 `rpx` 单位(750rpx = 屏幕宽度),组件名避免与原生组件同名 ## HBuilderX vs CLI 开发 - HBuilderX 可视化运行/发行;CLI 推荐 VSCode + uni-app 官方插件 - CLI 创建项目:`npx degit dcloudio/uni-preset-vue#vite-ts` ## 常用命令(CLI 模式) ```bash npm run dev:mp-weixin # 开发微信小程序(输出到 dist/dev/mp-weixin) npm run dev:h5 # 开发 H5 npm run build:mp-weixin # 构建微信小程序 npm run build:h5 # 构建 H5 ``` ## 常见陷阱 - `pages.json` 修改后必须重新编译才能生效 - 小程序端 `v-html` 不可用,需使用 `rich-text` 组件替代 - 微信小程序自定义组件样式隔离,父组件样式默认不穿透到子组件 - `uni.navigateTo` 打开页面上限 10 层,超出需用 `redirectTo` 或 `reLaunch` - App 端调试使用 `console.log` 在 HBuilderX 控制台查看,不是浏览器 DevTools