# REASONIX.md ## 项目概述 **microapp-vue3** — 基于 Vue 3 + TypeScript + Vite 的微前端子应用,使用 `@micro-zoe/micro-app` 框架集成到主应用中。同时集成了高德地图 JSAPI,提供地图展示、地理围栏、路径轨迹等功能。 - **类型**: 前端微应用(子应用) - **运行环境**: 浏览器(支持独立运行 & micro-app 微前端环境) - **默认端口**: `3001` --- ## 技术栈 | 类别 | 技术 | 版本 | |------|------|------| | 框架 | Vue 3 (Composition API) | ^3.5 | | 语言 | TypeScript | ~6.0 | | 构建 | Vite | ^8.0 | | 路由 | Vue Router | ^4.6 | | 微前端 | @micro-zoe/micro-app | ^1.0.0-rc.31 | | 地图 | @amap/amap-jsapi-loader | ^1.0.1 | --- ### 环境变量 在 `.env` 中配置高德地图 Key(以 `VITE_` 为前缀暴露给客户端): ``` VITE_AMAP_JSAPI_KEY= VITE_AMAP_WEB_KEY= VITE_AMAP_SECURITY_CODE= ``` --- ## 架构设计 ### 微前端生命周期 `src/main.ts` 中实现了 `mount()` / `unmount()` 两个生命周期函数: - **微前端环境** (`window.__MICRO_APP_ENVIRONMENT__` 为 truthy):导出 `{ mount, unmount }` 到 `window['micro-app-']`,由 micro-app 框架调用 - **独立运行**:直接调用 `mount()` 挂载到 `#microapp-vue3-root` ### 路由 - 使用 `createWebHistory`,`baseroute` 动态适配: - 微前端环境:使用 `window.__MICRO_APP_BASE_ROUTE__` - 独立运行:使用 `/` - 所有路由均使用懒加载 (`() => import(...)`) - 挂载点使用独立 id `#microapp-vue3-root`(避免与主应用 `#app` 冲突) ### 跨应用通信 通过 micro-app 的 `globalData` 机制实现: - **发送**: `window.microApp.setGlobalData({ key: value })` - **接收**: `window.microApp.addGlobalDataListener(callback, autoTrigger)` - 示例见 `src/views/Home.vue` 中的共享计数器 ### 高德地图集成 - **单例加载**: `loadAMap()` 确保 JSAPI 全局只加载一次,所有地图实例共享 - **Composable 模式**: `useAmap()` 返回 `containerRef`、`mapInstance`、`loading`、`error`、`initMap`、`destroyMap` - **配置集中管理**: 所有 AMap 配置(Key、版本、插件列表)在 `src/config/amap.ts` 中统一维护 - **MapPanel 组件**: 每个 MapPanel 有独立的 DOM 容器和地图实例,可多个同时存在 --- ## 编码规范 ### Vue 组件 - 使用 `