⚠️ 该项目已标记为弃用(长期停滞、不再维护),不建议用于新项目。

WePY
框架已弃用腾讯开源的小程序组件化开发框架,类 Vue 语法,支持组件化开发、状态管理、编译优化。微信小程序原生增强方案。已于 2024 年归档,不建议用于新项目。
★ 22,576🕒 最近更新 2020-07
前端框架组件化框架Vue语法
特性
- 类Vue开发风格
- 自定义组件开发
- 引入NPM包
- Promise/Async Functions
- 支持Less/Sass/Stylus
- TypeScript支持
- 编译器插件体系
详细文档
WePY — 腾讯小程序组件化框架(已归档)#
⚠️ 项目已归档(2024 年),不再活跃维护。新项目请选用 Taro / uni-app / Mpx。
资源概述#
WePY(发音 /'wepi/)是腾讯于 2017 年开源的微信小程序组件化开发框架,是最早一批小程序增强框架之一。它通过预编译手段,让开发者使用类 Vue 单文件组件(.wpy)的语法开发小程序,在编译时转换为微信原生代码。
核心特性:
- 类 Vue 语法:单文件组件模式,
<template>+<style>+<script>+<config>四段式结构 - 组件化:支持自定义组件、组件嵌套与通信(
$broadcast/$emit/$invoke) - NPM 支持:可直接在小程序中引入第三方 npm 包
- Promise 化:所有微信小程序异步 API 封装为 Promise,支持 async/await
- 编译器支持:Less/Sass/Stylus/PostCSS、Babel/TypeScript、Pug
- 插件体系:文件压缩、图片压缩、内容替换等构建插件
历史地位: WePY 是小程序生态早期最重要的框架之一,与 Taro、uni-app、mpvue 并称四大小程序框架。腾讯疫苗查询、腾讯翻译君、腾讯地图、玩转故宫等知名小程序均使用 WePY 开发。GitHub 累计 22.5k stars。
当前状态: 随着微信原生能力增强(自定义组件、 npm 支持)以及 Taro/uni-app/Mpx 等跨端框架崛起,WePY 已于 2024 年正式归档(GitHub repository archived),不再接受 PR 和 issue。新项目不建议选用。
设计规范#
单文件组件结构#
<!-- src/pages/index.wpy -->
<style lang="less">
@color: #4D926F;
.num { color: @color; }
</style>
<template>
<view class="container">
<view class="num" @tap="num++">{{num}}</view>
<custom-component />
<input v-model="text" />
</view>
</template>
<config>
{
usingComponents: {
customComponent: '@/components/customComponent'
}
}
</config>
<script>
import wepy from '@wepy/core';
wepy.page({
data: { num: 0, text: 'Hello World' },
});
</script>
组件通信#
WePY 提供三种组件通信方式:
$broadcast:父组件向所有子组件广播事件$emit:子组件向父组件发送事件$invoke:直接调用另一组件的方法
审核规范#
WePY 项目编译后输出标准微信小程序代码,审核流程与原生小程序一致。需遵守微信小程序运营规范:
- 主体需在微信公众平台注册并通过认证
- 类目与实际内容匹配
- iOS 端虚拟支付需走 iOS 内购
- 不得诱导分享、刷量
开发指南#
快速上手#
# 1. 安装 WePY CLI
npm install @wepy/cli@next -g
# 2. 创建项目
wepy init standard myproject
# 3. 安装依赖
cd myproject && npm install
# 4. 启动开发编译(热更新)
wepy build --watch
# 5. 用微信开发者工具打开 dist 目录预览
项目目录结构#
myproject/
├── src/
│ ├── app.wpy # 入口文件
│ ├── pages/ # 页面
│ │ └── index.wpy
│ ├── components/ # 自定义组件
│ └── mixins/ # 混入
├── wepy.config.js # 构建配置
└── package.json
常见陷阱#
- 已归档无社区支持:框架已停止维护,遇到 bug 无法通过 issue 获取帮助,新项目应选择 Taro / uni-app
- WePY 2.x 与 1.x 差异大:2.x 基于
@wepy/core,API 有较大变化,文档分散,迁移成本高 - 编译产物不可直接调试:WePY 编译后代码与源码差异较大,需依赖 sourcemap
- 与原生组件混用限制:WePY 自定义组件与微信原生自定义组件可混用,但事件机制不同,需通过
usingComponents显式声明 - 包体增大:编译后的运行时框架代码会增加包体大小(约 100-200KB),需注意主包 2MB 限制
迁移建议#
从 WePY 迁移到现代框架:
- → Taro:React/Vue 语法,跨端能力强,社区活跃
- → uni-app:Vue 语法,生态成熟
- → Mpx:滴滴出品,增强型小程序框架
生态资源#
推荐框架(替代方案)#
| 框架 | 语法 | Stars | 说明 |
|---|---|---|---|
| Taro | React/Vue | 37k+ | 京东出品,跨端能力强 |
| uni-app | Vue | 39k+ | DCloud 出品,生态最全 |
| Mpx | Vue | 11k+ | 滴滴出品,小程序增强 |
UI 库#
| 库 | 说明 |
|---|---|
| WeUI | 微信官方 UI 库,WePY 项目可直接引用 |
| Vant Weapp | 有赞出品,需通过 usingComponents 引入 |
社区资源#
- GitHub(已归档):Tencent/wepy
- 资源汇总:awesome-wepy
- 文档:wepyjs.github.io/wepy-docs
版本更新#
- 2024 年:GitHub 仓库正式归档(archived),停止维护
- WePY 2.x(最后版本):基于
@wepy/core,支持 Vue 风格的响应式数据流 - 不再接收:PR、issue、bug 修复
- 建议:所有 WePY 项目应制定迁移计划,逐步迁移到 Taro / uni-app / Mpx