{"id":23953812,"url":"https://github.com/WeBankFinTech/wxa","last_synced_at":"2025-09-12T13:31:02.528Z","repository":{"id":38403774,"uuid":"135994565","full_name":"WeBankFinTech/wxa","owner":"WeBankFinTech","description":"🖖  轻量级的小程序开发框架。可以渐进接入的小程序开发框架，专注于小程序原生开发，提供更好的工程化、代码复用能力，提高开发效率并改善开发体验。","archived":false,"fork":false,"pushed_at":"2025-04-09T13:23:19.000Z","size":14276,"stargazers_count":230,"open_issues_count":12,"forks_count":29,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-09-11T01:23:09.130Z","etag":null,"topics":["aop","decorators","mini-app","mini-program","mp","weapp","wxa"],"latest_commit_sha":null,"homepage":"https://webankfintech.github.io/wxa/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeBankFinTech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-04T08:30:02.000Z","updated_at":"2025-09-05T02:34:23.000Z","dependencies_parsed_at":"2024-01-14T06:10:44.826Z","dependency_job_id":"552b436f-d2af-471c-9c89-55e1759401fa","html_url":"https://github.com/WeBankFinTech/wxa","commit_stats":{"total_commits":873,"total_committers":21,"mean_commits":41.57142857142857,"dds":0.5326460481099656,"last_synced_commit":"473827e19d8594647ca6878a492753dbb1fd343c"},"previous_names":["wxajs/wxa"],"tags_count":84,"template":false,"template_full_name":null,"purl":"pkg:github/WeBankFinTech/wxa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankFinTech%2Fwxa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankFinTech%2Fwxa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankFinTech%2Fwxa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankFinTech%2Fwxa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeBankFinTech","download_url":"https://codeload.github.com/WeBankFinTech/wxa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeBankFinTech%2Fwxa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274743134,"owners_count":25341133,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aop","decorators","mini-app","mini-program","mp","weapp","wxa"],"created_at":"2025-01-06T14:46:38.143Z","updated_at":"2025-09-12T13:31:01.588Z","avatar_url":"https://github.com/WeBankFinTech.png","language":"JavaScript","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://webankfintech.github.io/wxa/\"\u003e\n        \u003cimg src=\"./docs/.vuepress/public/wxajs-color.svg\" width=\"300\" height=\"300\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003ch3 align=\"center\"\u003e\n    渐进式小程序开发框架\n\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.npmjs.com/package/@wxa/cli2\"\u003e\u003cimg alt=\"Travis Status\" src=\"https://img.shields.io/npm/v/@wxa/cli2.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm\"\u003e\u003c/a\u003e\n    \u003cimg alt=\"node (scoped with tag, custom registry)\" src=\"https://img.shields.io/badge/Node-%3E%3D%208.15.0-brightgreen.svg?maxAge=2592000\u0026style=flat-square\u0026logo=node\" /\u003e\n    \u003cimg alt=\"License\" src=\"https://img.shields.io/npm/l/@wxa/core.svg?color=brightGreen\u0026style=flat-square\u0026label=License\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/WeBankFinTech/wxa/actions\"\u003e\u003cimg alt=\"Github Actions\" src=\"https://github.com/WeBankFinTech/wxa/workflows/Jest%20\u0026%20Codecov/badge.svg?branch=master\u0026style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://dev.azure.com/genuifx/wxa/_build?definitionId=1\"\u003e\u003cimg alt=\"Travis Status\" src=\"https://dev.azure.com/genuifx/wxa/_apis/build/status/wxajs.wxa?branchName=master\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/WeBankFinTech/wxa\"\u003e\n        \u003cimg src=\"https://codecov.io/gh/WeBankFinTech/wxa/branch/master/graph/badge.svg\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n# wxa.js\n\n轻量级的渐进式小程序开发框架，专注于小程序原生开发，提供更好的工程化、代码复用能力，提高开发效率并改善开发体验。\n\n极速上手，零配置，可无痛迁移。\n\n\n**框架优势**\n\n- 🖖 **极速上手** 无额外的学习门槛，可以完全使用原生的小程序语法开发。\n\n- :surfer: **零配置** 标准项目无需任何配置，即可运行。\n\n- :light_rail: **低成本** 超低迁移成本，原生小程序可以马上在 `@wxa/cli2` 中跑起来。支持原生和 wxa 混杂开发，助力老项目逐步迁移。\n\n- :rocket: **依赖分包算法** 自研的依赖分包算法，帮助开发者充分的利用[分包空间](https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages/basic.html)。\n\n- :curly_loop: **依赖分析** 自动分析项目依赖，无需手动 copy 三方依赖到项目中。\n\n- :penguin: **全方位** 提供小程序开发增强能力，譬如状态管理、表单校验等。\n\n- 🤖 **按需引入** 任意第三方工具、组件库，随时安装使用，完美适配 weui, vant-weapp等组件库。\n\n- :alien: **多实例** 一次性编译出多个三方项目或其他平台的小程序，如头条小程序。\n\nMore detail [Documents](https://webank.gitee.io/wxa/)\n\n更完善的[文档](https://webank.gitee.io/wxa/)\n\n\n## 安装使用\n\n使用 `yarn` 或 `npm` 全局安装\n\n```bash\nnpm i -g @wxa/cli2\n```\n\n**极速新建项目**\n\n```bash\nwxa2 create\n```\n\n**启动开发环境**\n\n```bash\nwxa2 build --watch\n```\n\n## 开发示例\n\n#### app.wxa\n\n```html\n\u003cscript\u003e\nimport {App} from '@wxa/core';\n\n@App\nexport default class Main {\n    globalData = {\n        userInfo: 'Genuifx',\n    }\n}\n\u003c/script\u003e\n\n\u003cconfig\u003e\n{\n    \"pages\": [\n        \"pages/index\"\n    ]\n}\n\u003c/config\u003e\n\n\u003cstyle lang=\"scss\"\u003e\npage {\n    width: 100%;\n    height: 100%;\n}\n\u003c/style\u003e\n\n```\n\n#### pages/index.wxa\n\n```vue\n\u003cscript\u003e\nimport {Page, Mixins, Debounce} from '@wxa/core';\nimport fooMixin from '../mixins/foo.js';\n\n//定义页面，添加Mixins\n@Page\n@Mixins(fooMixin)\nexport default class Index {\n    data = {\n        formA: {\n            org: 'fintech',\n            name: 'wxa'\n        }\n    }\n\n    async onLoad() {\n        console.log('Hello World')    \n    }\n\n    // 函数防抖\n    @Debounce(300)\n    sumbitA(e) {\n        console.log('submit success!');\n    }\n}\n\u003c/script\u003e\n\n\u003cconfig\u003e\n{\n    \"navigationBarTitleText\": \"Hello Wxa\"\n}\n\u003c/config\u003e\n\n\u003ctemplate\u003e\n    \u003cview class=\"page\"\u003e\n        Hi, \u003cinput type=\"text\" value=\"{{formA.name}}\" /\u003e\n        \u003cbutton bindtap=\"sumbitA\"\u003e提交\u003c/button\u003e\n    \u003c/view\u003e\n\u003c/template\u003e\n\n\u003cstyle lang=\"scss\"\u003e\n.page {\n    width: 100%;\n    height: 100%;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: center;\n}\n\u003c/style\u003e\n```\n\n默认导出的方法将会自动调用小程序相应的 `Page`、 `Component`、 `App` 方法进行注册。\n\n更完善的[文档](https://webank.gitee.io/wxa/)\n\n**极速预览小程序**\n\n```bash\nwxa2 cli --action preview\n```\n\n\n## 技术特点\n\nwxa 是一个 AOP 框架，主要使用 Decorator（运行时改写，拦截）和预编译实现框架功能。\n\n使用 Decorator 实现了：\n\n- :white_check_mark:  **`Fetch`** 自动防重，自动队列管理的网络请求方法。\n- :white_check_mark:  **`Router`** 简洁的 API、预加载特性。\n- :white_check_mark:  **`Eventbus`** 跨页面，跨组件交互的简单方案。\n- :white_check_mark:  **`Mixins`** 混合，跨页面、跨组件复用逻辑。\n- :white_check_mark:  **`Diff`** 增量设置数据。\n- :white_check_mark:  **`Storage`** 小程序持久化缓存数据。\n- :white_check_mark:  **`SessionStorage`** 应用周期内缓存数据。\n- :white_check_mark:  **`Lock`** 防止重复执行函数，前端防重利器。\n- :white_check_mark:  **`Debounnce`** 防抖动。\n\n\n查看详细的 [Class Decorators](https://webank.gitee.io/wxa/core/API.html#decorators-%E7%B1%BB%E8%A3%85%E9%A5%B0%E5%99%A8)\n\n预编译方面，实现了对小程序项目的依赖解析，利用依赖树对整个项目进行管理，以此为基础适配了`npm`、单文件开发、云开发、三方开发。开发语法方面支持最新的 ES\\*语法（包括 Async/Await）、Sass/Scss、Stylus，有需求的话可以适配更多语法。\n\n\n## wxa生态\n\n|包名|描述|版本\n|-----|----|----|\n|@wxa/core|wxa运行时核心|![](https://img.shields.io/npm/v/@wxa/core.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/cli2|wxa编译时与命令行工具|![](https://img.shields.io/npm/v/@wxa/cli2.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/validate|表单验证、支持自定义校验规则和提示|![](https://img.shields.io/npm/v/@wxa/validate.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/watch| watch \u0026 computed |![](https://img.shields.io/npm/v/@wxa/watch.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/log| 小程序实时日志上报 |![](https://img.shields.io/npm/v/@wxa/log.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/mobx|wxa引入mobx|![](https://img.shields.io/npm/v/@wxa/mobx.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/redux|wxa引入redux|![](https://img.shields.io/npm/v/@wxa/redux.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-uglifyjs| 压缩美化 Javascript 代码 |![](https://img.shields.io/npm/v/@wxa/plugin-uglifyjs.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-replace| 任意字符替换，用于生产测试参数替换 |![](https://img.shields.io/npm/v/@wxa/plugin-replace.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-copy| 复制指定静态资源 |![](https://img.shields.io/npm/v/@wxa/plugin-copy.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-bind-hijack| 劫持小程序bind事件插件 |![](https://img.shields.io/npm/v/@wxa/plugin-bind-hijack.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-minify-wxml| wxml 压缩 |![](https://img.shields.io/npm/v/@wxa/plugin-minify-wxml.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-postcss| 自定义需要引入的postcss插件 |![](https://img.shields.io/npm/v/@wxa/plugin-postcss.svg?label=NPM\u0026color=brightGreen\u0026style=flat-square\u0026logo=npm)\n|@wxa/plugin-dependencies-analysis| 项目构建后的模块依赖关系、体积大小等信息可视化, 方便分析项目的优化空间。|![](https://img.shields.io/badge/Status-Outdated.-orange?style=flat-square)\n| [wxa-vscode](https://github.com/WeBankFinTech/wxa-vscode) | vscode 插件。开箱即用，安装完毕你将获得：代码自动填充、格式化; 语法高亮、检查（包括wxml、wxs文件）; 代码片段提示; 单文件组件支持 |![](https://img.shields.io/badge/-extension.-brightGreen?style=flat-square)\n\n\n## 社区微信群\n\n\u003cimg src=\"./640.jpg\" width=\"380px\" height=\"460px\" /\u003e\n\n社群二维码过期可联络\n\n邮箱 junbiaoli@webank.com、iveswen@webank.com\n\n项目负责人微信 szyshangzhiyuan （加好友请备注：wxa） \n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://genuifx.github.io/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/10156994?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWZT\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=Genuifx\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-Genuifx\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/biaodoit\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/2704629?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebiaodoit\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=biaodoit\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-biaodoit\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.szy321.com/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/12182232?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eshangzy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=szYuan\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-szYuan\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/hm-fannie\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6054788?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMin Huang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=hm-fannie\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-hm-fannie\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/lucaszhu2zgf\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2087827?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003elucaszhu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=lucaszhu2zgf\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-lucaszhu2zgf\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/liuhang8023\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/24379224?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ehughliu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=liuhang8023\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-liuhang8023\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/FlyDaisy\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/33273144?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFlyDaisy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=FlyDaisy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-FlyDaisy\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://zacharykwan.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/11681043?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZachary Kwan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=zehuiguan\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://segmentfault.com/u/alan\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1666185?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlan Zhang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=zcfan\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/hanzooo\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/16368939?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ehanzooo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/wxajs/wxa/commits?author=hanzooo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n\n## LICENSE\n\n[MIT](./LICENSE)\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWeBankFinTech%2Fwxa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWeBankFinTech%2Fwxa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWeBankFinTech%2Fwxa/lists"}