更新记录

1.0.0(2026-06-01) 下载此版本

init


平台兼容性

uni-app(4.87)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - -

其他

多语言 暗黑模式 宽屏模式
× ×

logo

仿微信 Demo

基于 UniApp + Vue 2 + Vuex 开发的仿微信移动端应用

uni-app vue platform


目录


项目简介

一个高度还原微信 UI 和交互的移动端 Demo 项目,采用 uni-app 框架开发,支持 H5、微信小程序、Android、iOS 多端运行。项目涵盖了微信的主要功能模块,包括聊天、通讯录、发现、我的四大主页面及大量子页面。

内置小游戏

游戏 类型 说明
弹弹球 Canvas 砖块消除 触屏控制挡板反弹小球,粒子特效、道具系统、连击机制、5 关递增难度
消消乐 Canvas 三消益智 8x8 糖果棋盘,拖拽交换消除,连锁 combo 计分,5 关递增目标
漫漫修仙路 文字放置 RPG 修炼/突破/除妖/炼丹四个玩法,背包 + 存档系统,9 个修仙境界

技术栈

类别 技术
框架 uni-app (Vue 2)
状态管理 Vuex
路由 uni-app 内置路由 + pages.json 配置
样式 SCSS + ColorUI
组件库 uni-ui
存储 uni.storage + localStorage
Canvas Canvas 2D API (type="2d")
HTTP uni.request 封装

快速开始

环境要求

  • Node.js >= 12.x
  • HBuilderX (推荐) 或 npm/yarn
  • 微信开发者工具 (小程序调试)

安装依赖

# 克隆项目
git clone <your-repo-url>
cd wx-demo

# 安装依赖
npm install

本地开发

方式一:HBuilderX(推荐)

  1. 使用 HBuilderX 打开项目根目录
  2. 点击菜单:运行 → 运行到浏览器 → Chrome
  3. 默认访问 http://localhost:9090

方式二:命令行

# H5 开发模式
npm run dev:h5

# 微信小程序开发模式(需先配置 appid)
npm run dev:mp-weixin

后端接口

项目默认连接 RuoYi-Vue 后台。可在 config.js 中修改接口地址:

// config.js
export default {
  baseUrl: 'https://your-api-server.com/prod-api',
  // ...
}

不接入后端也可运行,登录页点击"游客登录"进入主界面,大部分功能使用本地数据模拟。


构建部署

# H5 构建
npm run build:h5

# 微信小程序构建
npm run build:mp-weixin

# 打包后的文件在各平台对应目录:
# H5         → dist/build/h5
# 微信小程序  → dist/build/mp-weixin
  • H5 部署:将 dist/build/h5 下文件上传至任意静态服务器或 Nginx
  • 微信小程序:用微信开发者工具打开 dist/build/mp-weixin 目录,上传审核

功能模块

一、微信(聊天)

功能 说明 状态
聊天列表 展示所有聊天会话,支持置顶、免打扰、未读角标
搜索 顶部搜索栏,支持搜索联系人/聊天记录
添加菜单 右上角"+"弹出菜单:发起群聊、添加朋友、扫一扫、收付款
聊天详情 完整的聊天界面,支持文字、图片、语音、视频、文件消息
下拉刷新 下拉刷新聊天列表
多选收藏 聊天消息支持多选后批量收藏

二、通讯录

功能 说明 状态
字母索引 按首字母分组展示联系人,右侧字母快速定位
搜索 顶部搜索栏查找联系人
特殊入口 新的朋友、群聊、标签、公众号
联系人详情 查看联系人资料
添加朋友 微信号/手机号搜索、二维码、雷达加朋友等

三、发现

功能 说明 状态
朋友圈 好友动态列表(文字、图片、视频),支持点赞和评论
扫一扫 模拟取景框扫描动画,支持扫码/识物/翻译三模式切换
摇一摇 点击/摇晃触发搜索动画,支持人/歌曲/电视三Tab
看一看 精选/视频/关注三Tab文章列表,含标题/来源/在看数
搜一搜 搜索栏 + 8类搜索入口 + 热搜榜Top10 + 搜索历史
附近 附近的人 + 附近的直播入口,附近用户列表含距离
购物 轮播Banner + 9类商品分类 + 限时抢购 + 双列推荐
游戏 Banner推广 + 最近在玩 + 小游戏入口 + 好友在玩 + 热门游戏列表
弹弹球 Canvas砖块消除游戏,触屏控制,粒子特效/道具/连击/关卡
消消乐 Canvas三消益智游戏,8x8糖果棋盘,拖拽交换消除,连锁combo
漫漫修仙路 文字修仙放置养成,修炼/突破/除妖/炼丹,背包/存档,9境界
小程序 最近使用 + 我的小程序 + 附近小程序列表
视频号 关注/朋友/热门/附近四Tab,视频卡片列表
直播 分类Tab + 双列直播卡片,含主播信息/观看人数

四、我

功能 说明 状态
个人信息 头像、昵称、微信号展示,资料编辑
状态 40+预设状态(心情/工作/活动/休息),自定义文字+背景色
收藏 支持文本/图片/视频/语音/文件/链接/聊天记录多类型收藏
相册 按月分组3列图片网格,15张示例照片,点击预览大图
卡包 会员卡/优惠券/票据/交通卡展示,含卡片详情弹窗
表情 我的表情+表情包管理,表情商店入口,支持删除/管理
设置 账号安全/新消息通知/隐私/通用/修改密码/帮助反馈/关于

五、设置子页面

功能 说明 状态
账号与安全 微信号、手机号、声音锁、设备管理等
新消息通知 通知开关、消息详情、通话提醒、提示音选择
隐私 加友验证、添加方式开关、朋友圈权限、公众号推荐
通用 多语言、字体大小、存储空间、听筒模式、NFC等

移动端适配

适配项 说明
Viewport width=device-width, viewport-fit=cover, 禁止缩放
安全区域 适配 iPhone 刘海屏/底部指示条,动态计算 safeArea
触摸事件 游戏使用 touchstart/touchmove/touchend.prevent 阻止默认滚动
手势防护 touch-action: none + overscroll-/code> 禁止浏览器下拉/回退手势
文字选择 user-select: none + -webkit-touch-callout: none 禁止误选中
暗色模式 apple-mobile-web-app-status-bar-style: black-translucent
屏幕旋转 Canvas 游戏监听 resize/orientationchange 自动重绘布局
点击高亮 全局 -webkit-tap-highlight-color: transparent
多浏览器 iOS Safari、微信内置浏览器、QQ X5、UC 浏览器均已适配
动态视口 使用 100dvh 解决移动端浏览器地址栏导致的高度计算偏差

项目结构

wx-demo/
├── api/                         # API 接口层
│   ├── login.js                 #   登录/注册/登出/验证码
│   └── system/                  #   系统管理接口
│       ├── dict/data.js         #     字典数据
│       ├── dict/type.js         #     字典类型
│       └── user.js              #     用户管理
├── components/                  # 自定义组件
│   └── uni-section/             #   通用 section 标题组件
├── pages/                       # 页面目录(共 30+ 页面)
│   ├── login.vue                #   登录页
│   ├── register.vue             #   注册页
│   ├── chat/                    #   微信 Tab
│   │   ├── index.vue            #     聊天列表
│   │   └── detail.vue           #     聊天详情
│   ├── contacts/                #   通讯录 Tab
│   │   ├── index.vue            #     联系人列表
│   │   ├── detail.vue           #     联系人详情
│   │   └── add.vue              #     添加朋友
│   ├── discover/                #   发现 Tab
│   │   ├── index.vue            #     发现主页
│   │   ├── game/                #     小游戏
│   │   │   ├── brick.vue        #       弹弹球 (Canvas)
│   │   │   ├── match3.vue       #       消消乐 (Canvas)
│   │   │   └── xiuxian.vue      #       漫漫修仙路 (文字RPG)
│   │   ├── moments.vue          #     朋友圈
│   │   ├── scan.vue             #     扫一扫
│   │   ├── shake.vue            #     摇一摇
│   │   ├── topstory.vue         #     看一看
│   │   ├── search.vue           #     搜一搜
│   │   ├── nearby.vue           #     附近
│   │   ├── shopping.vue         #     购物
│   │   ├── game.vue             #     游戏列表
│   │   ├── miniprogram.vue      #     小程序
│   │   ├── video.vue            #     视频号
│   │   ├── live.vue             #     直播
│   │   └── post.vue             #     发表文字
│   ├── mine/                    #   我 Tab
│   │   ├── index.vue            #     我的主页
│   │   ├── info/                #     个人信息
│   │   │   ├── index.vue
│   │   │   ├── edit.vue
│   │   │   └── personal.vue
│   │   ├── avatar/index.vue     #     修改头像
│   │   ├── pwd/index.vue        #     修改密码
│   │   ├── status/index.vue     #     状态
│   │   ├── favorites/index.vue  #     收藏
│   │   ├── album/index.vue      #     相册
│   │   ├── cards/index.vue      #     卡包
│   │   ├── emoji/index.vue      #     表情
│   │   ├── about/index.vue      #     关于
│   │   ├── help/index.vue       #     帮助
│   │   └── setting/             #     设置
│   │       ├── index.vue        #       设置主页
│   │       ├── account.vue      #       账号与安全
│   │       ├── notify.vue       #       新消息通知
│   │       ├── privacy.vue      #       隐私
│   │       └── general.vue      #       通用
│   └── common/                  #   通用页面
│       ├── webview/index.vue    #     WebView 容器
│       └── textview/index.vue   #     文本查看器
├── plugins/                     # Vue 插件
│   ├── index.js                 #   插件安装器
│   ├── tab.js                   #   $tab 页面导航
│   ├── auth.js                  #   $auth 权限验证
│   └── modal.js                 #   $modal 弹窗提示
├── static/                      # 静态资源
│   ├── index.html               #   H5 模板(含移动端 meta 标签)
│   ├── images/                  #   图片资源
│   │   ├── banner/              #     Banner 图片
│   │   └── tabbar/              #     底部导航图标
│   ├── scss/                    #   全局样式
│   │   ├── global.scss          #     全局工具类
│   │   ├── colorui.css          #     ColorUI 组件样式
│   │   └── index.scss           #     样式入口
│   └── font/                    #   字体图标
├── store/                       # Vuex 状态管理
│   ├── index.js                 #   Store 入口
│   ├── getters.js               #   全局 getters
│   └── modules/                 #   模块
│       ├── user.js              #     用户登录状态
│       ├── favorites.js         #     收藏数据 (localStorage)
│       └── status.js            #     状态数据 (localStorage)
├── utils/                       # 工具函数
│   ├── auth.js                  #   Token 存取
│   ├── common.js                #   Toast / Confirm / 参数序列化
│   ├── constant.js              #   常量定义
│   ├── errorCode.js             #   HTTP 错误码映射
│   ├── permission.js            #   权限校验
│   ├── request.js               #   uni.request 封装
│   ├── storage.js               #   命名空间存储
│   ├── upload.js                #   文件上传
│   └── validate.js              #   表单校验
├── uni_modules/                 # uni-ui 组件(15+ 组件包)
├── pages.json                   #   页面路由 & TabBar 配置
├── manifest.json                #   应用清单(多平台配置)
├── config.js                    #   全局配置(API地址等)
├── App.vue                      #   根组件
├── main.js                      #   应用入口
└── uni.scss                     #   uni-app 全局 SCSS 变量

配置说明

全局配置 config.js

export default {
  baseUrl: 'https://vue.ruoyi.vip/prod-api',  // API 基础地址
  appName: '微信Demo',
  appVersion: '1.0.0'
}

路由配置 pages.json

  • 全局自定义导航栏 navigationStyle: "custom"
  • 底部 4 Tab:微信 / 通讯录 / 发现 / 我
  • 小游戏页面使用独立导航样式
  • 共注册 40 个页面路由

应用清单 manifest.json

  • h5:hash 路由模式,开发端口 9090,模板 static/index.html
  • mp-weixin:appid wxccd7e2a0911b3397
  • app-plus:Android 权限(相机、WiFi、震动等)

页面路由

底部导航 (TabBar)

Tab 路径 页面
微信 pages/chat/index 聊天列表
通讯录 pages/contacts/index 联系人列表
发现 pages/discover/index 发现主页
pages/mine/index 个人中心

小游戏

游戏 路径
游戏列表 pages/discover/game
弹弹球 pages/discover/game/brick
消消乐 pages/discover/game/match3
漫漫修仙路 pages/discover/game/xiuxian

主要子页面

页面 路径
聊天详情 pages/chat/detail
联系人详情 pages/contacts/detail
添加朋友 pages/contacts/add
朋友圈 pages/discover/moments
扫一扫 pages/discover/scan
摇一摇 pages/discover/shake
看一看 pages/discover/topstory
搜一搜 pages/discover/search
附近 pages/discover/nearby
购物 pages/discover/shopping
视频号 pages/discover/video
直播 pages/discover/live
小程序 pages/discover/miniprogram
修改头像 pages/mine/avatar/index
个人信息 pages/mine/info/index
编辑资料 pages/mine/info/edit
修改密码 pages/mine/pwd/index
状态 pages/mine/status/index
收藏 pages/mine/favorites/index
相册 pages/mine/album/index
卡包 pages/mine/cards/index
表情 pages/mine/emoji/index
设置 pages/mine/setting/index
账号与安全 pages/mine/setting/account
新消息通知 pages/mine/setting/notify
隐私 pages/mine/setting/privacy
通用 pages/mine/setting/general
帮助 pages/mine/help/index
关于 pages/mine/about/index

页面统计

  • 总页面数:40
  • Tab 页:4(微信、通讯录、发现、我)
  • 实现功能数:40+
  • 内置游戏:3(弹弹球、消消乐、漫漫修仙路)

本项目用于学习交流,非商业用途。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。