mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-11-07 01:18:54 +08:00
- buyer(95) / seller(169) / im(53) / manager(280) 共 597 个组件全部从 Options API 转换为 <script setup> - 四端 vuex 全部移除,状态管理统一迁移至 pinia 4(stores/ 目录) - util.js 等基础设施去除 vm 首参依赖;全局属性($Message/$filters 等)在 script 内改为具名导入 - 被外部 ref 访问的公共组件均已补齐 defineExpose(清单见各端 MIGRATION-VUE3.md) - 各端 eslint 启用 vue/component-api-style 防止新代码回退 Options API - 四端 yarn build 全部通过;迁移约定与注意事项已更新至各端 MIGRATION-VUE3.md
2.2 KiB
2.2 KiB
IM 客服端 Vue 3 迁移说明
技术栈
- Vue 3.5 + Vue Router 4 + Pinia 4
- Element Plus(替代 element-ui)
- 自研右键菜单
src/plugins/contextmenu.js(替代 vue-contextmenujs) vue-virtual-scroller@3、vue-cropper@1.x、vue-prism-editor@2.0.0-alpha.2
组合式 API 迁移(2026-10 完成)
全部 53 个 .vue 组件已从 Options API 转换为 <script setup>,并完成 vuex → pinia:
- 状态管理:
src/stores/下 8 个 store(app/user/talk/notify/settings/emoticon/dialogue/note),对应原 vuex 根 state + 7 个模块;mutation 全部转为同名 SCREAMING_CASE action。原src/store/已删除。 - 全局 mixin 保留:
main.js的app.mixin(MainMixin)依然生效(对<script setup>组件同样注入),mixin 内部已改用 pinia。注意:mixin 经this回调组件成员时,<script setup>的绑定不会出现在公共实例上——views/message/index.vue采用了 ctx 桥接(Object.defineProperties(instance.ctx, ...))方案,后续若有组件被全局 mixin 回调需用同样方案。 - socket 事件层(
im-server/event/*、plugins/ws-socket.js、utils/talk.js等纯 JS):vuex 引用全部改为函数内部useXxxStore()。 - $user() 名片弹层(
components/user/user-card/index.js):独立子 app 改用独立createPinia()。 - app-bridge.js:保留了
$store.state.talks.items兼容门面(惰性 getter),供旧调用形态使用。
启动
cd im
yarn install
yarn dev # 端口 8000
yarn build
迁移要点
- 入口
src/main.js—createApp,全局过滤器$filters - 路由
createRouter+createWebHistory,404 路由/:pathMatch(.*)* - 通知
im-server/event/talk.js通过app-bridge发ElNotification,避免循环引用 - 用户卡片
$user()插件用createApp挂载 - 指令
v-focus/v-paste/v-drag/v-outside已改为 Vue 3 钩子 - SVG
svg-sprite-loader+svg-icon全局组件 - 生命周期
destroyed→beforeUnmount;$set/$delete已移除
上线前检查
统一清单见仓库根目录:../MIGRATION-VUE3.md
IM 专项见该文档 「IM 客服端」 一节。