这套 UIKit 能解决什么问题?
如果你正在用 uniApp Vue2 开发即时通讯功能,可能会遇到这些问题:
- 从零搭建 IM 太复杂:消息收发、会话管理、联系人、群组...每个模块都要自己写
- 多端适配成本高:H5、App、微信小程序,每端都要单独处理兼容问题
- 状态管理混乱:消息状态、会话状态、用户状态交织在一起,难以维护
- 上线周期长:IM 功能开发往往需要数周甚至数月
这套 ChatUIKit 就是为了解决这些问题而生。
核心能力
1. 一套代码,多端运行
内置条件编译处理,自动适配 H5、App、微信小程序:
// H5 / App
<IndexedList :options="list">
<template v-slot:indexedItem="{ item }">
<UserItem :user="item" />
</template>
</IndexedList>
// 微信小程序自动适配
<!-- #ifdef MP-WEIXIN -->
<scroll-view scroll-y>
<UserItem v-for="item in list" :key="item.id" :user="item" />
</scroll-view>
<!-- #endif -->
2. 模块化状态管理
基于 Vuex 的模块化 Store 架构,职责清晰:
stores/
├── conn.js # 连接状态
├── message.js # 消息管理
├── conversation.js # 会话列表
├── contact.js # 联系人
├── group.js # 群组
├── appUser.js # 用户信息
└── config.js # 配置管理
简洁的 API 设计:
// 发送消息
this.$store.dispatch('message/sendTextMessage', {
to: 'userId',
chatType: 'singleChat',
msg: 'Hello World'
})
// 获取联系人
this.$store.dispatch('contact/getContactsFromServer')
// 监听事件
uni.$on('chatOnNewMessage', (msg) => { ... })
3. 完整功能覆盖
| 功能 | 说明 |
|---|---|
| 即时消息 | 文本、图片、语音、视频、文件、自定义消息 |
| 会话管理 | 置顶、删除、免打扰、未读数、草稿 |
| 联系人 | 添加、删除、黑名单、好友申请处理 |
| 群组 | 群组列表、创建群组 |
| 用户属性 | 头像、昵称、在线状态 |
| 消息操作 | 撤回、编辑、引用 |
快速集成(15 分钟)
Step 1:安装依赖
npm install easemob-websdk vuex pinyin-pro easemob-uniapp-logger-plugin
Step 2:复制 ChatUIKit 到项目
cp -r ChatUIKit-vue2 your-project/ChatUIKit
Step 3:初始化
// main.js
import Vue from 'vue'
import ChatUIKit, { store } from './ChatUIKit'
import { t, i18n } from './ChatUIKit/locales'
i18n.init()
Vue.prototype.$ChatUIKit = ChatUIKit
Vue.prototype.$t = t
new Vue({ store, ...App }).$mount()
Step 4:配置页面
// pages.json
{
"pages": [
{ "path": "pages/login/index" },
{ "path": "ChatUIKit/modules/Conversation/index" },
{ "path": "ChatUIKit/modules/ContactList/index" },
{ "path": "pages/chat/index" }
]
}
就这样,一个完整的 IM 应用框架就搭建完成了!
常见问题处理
1. 微信小程序 slot 限制
Vue2 在小程序中对 scoped slot 支持有限,UIKit 内部已通过条件编译处理,直接使用即可。
2. 静态资源路径
小程序环境下建议使用绝对路径或 require 引入静态资源。
适用场景
- 已有 uniApp Vue2 项目需要集成 IM 功能
- 团队对 Vue2 技术栈更熟悉,希望快速交付
- 需要同时支持 H5、App、微信小程序
- 希望减少 IM 功能开发周期
项目信息
- 快速开始:快速上手指南
- GitHub:easemob-uikit-uniapp-community
- 官方文档:doc.easemob.com/document/ap…
- 问题反馈:GitHub Issues