{"id":13671405,"url":"https://github.com/wdfe/weweb","last_synced_at":"2026-02-23T11:43:08.710Z","repository":{"id":52217751,"uuid":"94967104","full_name":"wdfe/weweb","owner":"wdfe","description":"兼容小程序写法的web开发框架","archived":false,"fork":false,"pushed_at":"2021-05-04T20:31:37.000Z","size":6214,"stargazers_count":596,"open_issues_count":24,"forks_count":87,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-09-26T16:51:55.683Z","etag":null,"topics":["cli","weapp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wdfe.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-21T05:42:31.000Z","updated_at":"2025-09-20T06:31:48.000Z","dependencies_parsed_at":"2022-09-05T18:50:58.394Z","dependency_job_id":null,"html_url":"https://github.com/wdfe/weweb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wdfe/weweb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdfe%2Fweweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdfe%2Fweweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdfe%2Fweweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdfe%2Fweweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wdfe","download_url":"https://codeload.github.com/wdfe/weweb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdfe%2Fweweb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29741732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","weapp"],"created_at":"2024-08-02T09:01:08.812Z","updated_at":"2026-02-23T11:43:08.652Z","avatar_url":"https://github.com/wdfe.png","language":"JavaScript","readme":"# weweb\n\n[![node](https://img.shields.io/badge/node-%3E%3D%207.6.0-brightgreen.svg)]()\n[![npm package](https://img.shields.io/npm/v/weweb-cli.svg)](https://www.npmjs.com/package/weweb-cli)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n[点我快速上手](https://weidian-inc.github.io/hera/#/basics/quickstart)\n## 简介\n\nweweb是一个兼容小程序语法的前端框架，你可以用小程序的写法，来写web应用。如果你已经有小程序了，通过它你可以将你的小程序运行在浏览器中。如果你熟悉vue的语法，也可以使用wepy编写小程序，再通过weweb转换后将其运行在web端。\n\n## 优点\n- 跨平台，一套代码多端运行（小程序、h5、未来还可以直接打包成app)\n- 自带常用组件，完美继承了小程序内置组件\n- 兼容小程序rpx语法，使页面更容易适配各种机型\n\n该项目基于小程序开发者工具内置的小程序运行框架来实现的，我们在仔细研究了小程序官方的底层框架后，实现了小程序运行在web端的service和view引擎，为了使weweb能适应web端的性能要求，相较小程序原生框架，主要有以下调整：\n\n- 框架核心库进行了大量精减，剔除web不相关的部分,使核心库体积大大减小\n- 将原有的三层架构精简为Service和View两层架构\n- 页面资源、框架内置组件均使用异步加载，提升加载速度\n- 支持自定义登录页面，代替微信登录功能\n- 去除了小程序对页面层级的限制\n- 实现了js版的wxml和wxss编译器以适应跨平台编译需求并无缝整合至weweb\n\n## 适用场景\n\n- 喜欢小程序的开发方式，或者只懂小程序开发，想通过小程序的开发方式来写web应用\n- 开发出小程序后，同时想拥有同样功能的h5应用，并希望能复用小程序的代码\n- 代替小程序开发者工具对小程序部分功能在浏览器端进行调试\n\n## 开发\n开发方式可以直接套用你以前开发小程序的方式，不需要另外的学习成本，只是在小程序开发完后，通过下面介绍的二种运行方式，把小程序编译转换成相应的h5应用，然后把编译后的代码扔到服务器上就行了\n\n## 运行\n\u003e 请先在系统中安装[node](https://nodejs.org/zh-cn/)，官方的安装包会同时为您装上依赖管理工具[npm](https://www.npmjs.com/)\n\n### 方法一：使用cli命令行工具\n\n安装：\n\n```sh\nnpm install weweb-cli -g\n```\n\n运行示例：\n\n```sh\n# Node 版本需高于 7.6.0， 推荐使用 lts 版本\nweweb ./demos/demo20170111/\n```\n\nOptions:\n\n- -h, --help       输出帮助信息\n- -V, --version    输出版本信息\n- -o, --open       使用 Chrome 打开小程序，仅对 Mac 有效\n- -l, --list       使用默认浏览器打开更新历史\n- -p, --port \\\u003cport\u003e   指定服务端口，默认 2000\n- -d, --dist \\\u003cdir\u003e   指定生成的路径\n- -t, --transform  只转换小程序,不起web服务\n\n### 方法二：手动构建并运行：\n\n```sh\n# clone此项目后安装依赖\nnpm i\n\n# 构建核心库：\nnpm run build\n\n# 运行示例：\n./bin/weweb ./demos/demo20170111/\n\n# 压缩app代码：使用环境变量 NODE_ENV=production\nNODE_ENV=production ./bin/weweb demos/demo20170111\n\n# 替换编译器：当默认编译出错时使用环境变量 DFT_CMP=true 可切换为微信开发者工具自带的编译器\nDFT_CMP=true ./bin/weweb demos/demo20170111\n\n# 环境变量可以组合使用\nNODE_ENV=production DFT_CMP=true ./bin/weweb demos/demo20170111\n```\n\n### 开发用命令\n\n```sh\n# 自动执行rebuild\nnpm run dev\n\n# 自动重启服务器\nnpm run autostart\n```\n\n## 在线演示demo\n\n[demo源码]\n\n[h5版在线demo]\n\n![小程序二维码](https://raw.githubusercontent.com/pgfxm/bbxx/master/src/images/awm.jpg)\n\n## 注意事项\n\nweweb默认使用我们自己写的编译器对wxml和wxss进行编译，但目前编译器还处于试用阶段，有些case可能没测全，使用weweb过程中如果发现一些异常情况，可以尝试切换成微信官方编译器，看看是否能解决问题。出现类似问题欢迎大家给我们提issue。我们将尽快修正\n\n```sh\n# 切换成微信开发者工具自带的编译器：使用环境变量 DFT_CMP=true 如下：\n\n# linux\nDFT_CMP=true ./bin/weweb demos/demo20170111\n\n# windows\nset DFT_CMP=true\u0026\u0026./bin/weweb demos/demo20170111\n```\n\n转换成H5后，会存在跨域访问接口及脱离微信环境带来的一些api无法支持的问题。我们可以通过在小程序的`app.json`文件中增加`weweb`配置项来解决一些常见的问题：\n\n- 登录：转换成H5后将不支持小程序原生的登录方式，可通过`loginUrl`项来设置调用`wx.login`时跳转到的登录页面\n\n``` js\n/**\n * 此处的loginUrl地址必须是在app.json里注册了的小程序地址\n */\n\n\"weweb\":{\n  \"loginUrl\":\"/page/H5login\"\n}\n\n/**\n * 当登录成功后调wx.loginSuccess();\n * 这个api可以自动返回到来源页面\n */\n\nsuccess : function(rt){\n  if(rt.result){\n    var login = require(\"../../modules/login/index.js\");\n    app.globalData.userInfo = rt.result;\n    login.setLoginInfo(rt.result);\n    wx.loginSuccess();\n  }else{\n    toast.show(self,rt.status.status_reason||'登录失败');\n  }\n}\n```\n\n- 跨域请求：当后端接口不支持JSONP时，可以增加requestProxy配置项来设置服务器端代理地址，以实现跨域请求\n\n``` js\n/**\n * 此处/remoteProxy是weweb自带server实现的一个代理接口\n * 实际项目中请改成自己的真实代理地址。如果接口支持返回jsonp格式，则无需做此配置\n */\n\n\"weweb\":{\n  \"requestProxy\":\"/remoteProxy\"\n}\n```\n\n## 转换效果说明\n\n- 转换成H5后，依赖微信环境的相关接口将无法支持，比如：登录等，需要自行改造为H5兼容方式\n- 小程序转换为H5后，特殊情况下，个别样式可能会有些异常，得自行调整兼容\n\n## 感谢\n\nweweb前期参考了[wept]项目的实现，目前有部分代码也是沿用了[wept]的或在这基础上改造而来。在此，特别感谢[wept]的作者 chemzqm 的无私奉献\n\n如果你有好的意见或建议，欢迎给我们提 [issue] 或 [PR]，为优化 [weweb] 贡献力量，如果觉得weweb不错，就请star起来吧\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\n\n[微信小程序简易教程]: https://mp.weixin.qq.com/debug/wxadoc/dev/\n[issue]: https://github.com/wdfe/weweb/issues/new\n[PR]: https://github.com/wdfe/weweb/compare\n[weweb]: https://github.com/wdfe/weweb\n[wept]: https://chemzqm.github.io/wept/#/\n[h5版在线demo]: https://wxshow.vipsinaapp.com/bbxx/\n[demo源码]: https://github.com/pgfxm/bbxx\n","funding_links":[],"categories":["微信小程序WePY框架开发资源汇总 ![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)","JavaScript"],"sub_categories":["WePY相关工具"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdfe%2Fweweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwdfe%2Fweweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdfe%2Fweweb/lists"}