weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web单面应用。如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中。在小程序大行其道的今天,它可以让你的小程序代码得到最大限度的发挥,他具有以下优点:

  • 跨平台,一套代码多端运行(小程序、h5、未来直接打包成安卓、ios app也不是梦)
  • 自带常用组件,完美继承了小程序内置组件
  • 兼容小程序rpx语法,使页面更容易适配各种机型

该项目基于小程序开发者工具内置的小程序运行框架来实现的,我们在仔细研究了小程序官方的底层框架后,实现了小程序运行在web端的service和view引擎,为了使weweb能适应web端的性能要求,相较小程序原生框架,主要有以下调整:

  • 框架核心库进行了大量精减,剔除web不相关的部分,使核心库体积大大减小
  • 将原有的三层架构精简为Service和View两层架构
  • 页面资源、框架不常用内置组件均使用异步加载,减少核心库体积,提升加载速度
  • 支持自定义登录页面,代替微信登录功能
  • 去除了小程序对页面层级的限制
  • 实现了js版的wxml和wxss编译器以适应跨平台编译需求并无缝整合至weweb

适用场景

  • 喜欢小程序的开发方式,或者只懂小程序开发,想通过小程序的开发方式来写web应用
  • 开发出小程序后,同时想拥有同样功能的h5应用,并希望能复用小程序的代码
  • 代替小程序开发者工具对小程序部分功能在浏览器端进行调试

开发

开发方式可以直接套用你以前开发小程序的方式,不需要另外的学习成本,只是在小程序开发完后,通过下面介绍的二种运行方式,把小程序编译转换成相应的h5应用,然后把编译后的代码扔到服务器上就行了

运行

请先在系统中安装node,官方的安装包会同时为您装上依赖管理工具npm

方法一:使用cli命令行工具对小程序直接转换

安装:

npm install weweb-cli -g复制代码

运行示例:

#./demos/demo20170111/这是小程序的存放路径
weweb ./demos/demo20170111/复制代码

Options:

  • -h, --help 输出帮助信息
  • -V, --version 输出版本信息
  • -o, --open 使用 Chrome 打开小程序,仅对 Mac 有效
  • -l, --list 使用默认浏览器打开更新历史
  • -p, --port \ 指定服务端口,默认 2000
  • -d, --dist \
  • -t, --transform 只转换小程序,不起web服务

方法二:手动构建并运行:

# clone [weweb]项目后安装依赖
npm i# 构建核心库:
npm run build# 运行示例:
./bin/weweb ./demos/demo20170111/# 压缩app代码:使用环境变量 NODE_ENV=production
NODE_ENV=production ./bin/weweb demos/demo20170111# 替换编译器:当默认编译出错时使用环境变量 DFT_CMP=true 可切换为微信开发者工具自带的编译器
DFT_CMP=true ./bin/weweb demos/demo20170111# 环境变量可以组合使用
NODE_ENV=production DFT_CMP=true ./bin/weweb demos/demo20170111复制代码

在线演示demo

demo小程序二维码如下:

小程序二维码

点此查看weweb编译后的h5在线演示
可以比较一下小程序和转换后生成的h5应用的差异
demo源码

注意事项

weweb默认使用我们自己写的编译器对wxml和wxss进行编译,但目前编译器还处于试用阶段,有些case可能没测全,使用weweb过程中如果发现一些异常情况,可以尝试切换成微信官方编译器,看看是不否能解决问题。出现类似问题欢迎大家给我们提issue。我们将尽快修正

# 切换成微信开发者工具自带的编译器:使用环境变量 DFT_CMP=true 如下:DFT_CMP=true ./bin/weweb demos/demo20170111复制代码

转换成H5后,会存在跨域访问接口及脱离微信环境带来的一些api无法支持的问题。我们可以通过在小程序的app.json文件中增加weweb配置项来解决一些常见的问题:

  • 登录:转换成H5后将不支持小程序原生的登录方式,可通过loginUrl项来设置调用wx.login时跳转到的登录页面
/*** 此处的loginUrl地址必须是在app.json里注册了的小程序地址*/"weweb":{"loginUrl":"/page/H5login"
}当登录成功后调用
wx.loginSuccess();
这个api可以自动返回到来源页面
示例代码:
success : function(rt){
if(rt.result){var login = require("../../modules/login/index.js");app.globalData.userInfo = rt.result;login.setLoginInfo(rt.result);wx.loginSuccess();
}else{toast.show(self,rt.status.status_reason||'登录失败');
}
}复制代码
  • 跨域请求:当后端接口不支持JSONP时,可以增加requestProxy配置项来设置服务器端代理地址,以实现跨域请求
/*** 此处/remoteProxy是weweb自带server实现的一个代理接口* 实际项目中请改成自己的真实代理地址。如果接口支持返回jsonp格式,则无需做此配置*/"weweb":{"requestProxy":"/remoteProxy"
}复制代码

小程序转换成h5效果说明

  • 转换成H5后,依赖微信环境的相关接口将无法支持,比如:登录等,需要自行改造为H5兼容方式
  • 小程序转换为H5后,特殊情况下,个别样式可能会有些异常,得自行调整兼容

最后放上我们github地址

github.com/wdfe/weweb。

转载于:https://juejin.im/post/59cb4b4ff265da0668760eb7

小程序web开发框架-weweb介绍相关推荐

  1. 小程序web开发框架-weweb介绍 1

    weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web单面应用.如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中.在小程序大行其道的今天,它可以让你的小程序代码得到最大 ...

  2. 选择小程序第三方开发框架时,需要考虑哪些因素?

    在选择小程序第三方开发框架时,我们需要综合考虑开发者技术栈.项目需求和目标平台等因素.Taro 是一个多端统一开发框架,适合需要覆盖多个平台的开发者,最终的选择应该基于个人的技术背景和项目需求,同时也 ...

  3. 几款微信小程序快速开发框架

    简介:微信小程序是一种全新的连接用户与服务的方式.那么怎样才能快速开发一个小程序呢?下面小编为大家介绍几款小程序快速开发框架.WePY腾讯官方开源的小程序组件化开发框架,目前有1.4w+Star ,一 ...

  4. 微信小程序 app.json 详细介绍

    微信小程序 app.json 详细介绍 {// 写各个页面的路径 (新增页面或者减少页面都要对其进行修改)"pages": ["pages/index/index&quo ...

  5. 函数计算搭建小程序Web应用后端服务

    简介:使用Severless架构搭建移动App.小程序和Web应用后端服务,弹性伸缩使用云资源. 直达最佳实践:[函数计算搭建小程序Web应用后端服务] 最佳实践频道:[点击查看更多上云最佳实践] 这 ...

  6. 微信小程序怎么新建php文件,微信小程序中创建小程序页面的步骤介绍(图文)...

    本篇文章给大家带来的内容是关于微信小程序之创建小程序页面的步骤介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 创建一个简单的页面,创建小程序页面的具体几个步骤: 1. 在page ...

  7. 没学后端也能开发小程序——微信小程序云开发的介绍知识

    微信小程序云开发的介绍知识 云开发模式 产品经理-->前端开发-->上线 云开发 传统开发 效率 只关心业务逻辑,效率高 需要关注非业务逻辑,效率低 成本 按需付费,有免费额度 前期需要预 ...

  8. 网约叫车出行小程序开发制作功能介绍

    网约叫车出行小程序开发制作功能介绍: 打车小程序网约车顺风车拼车/代驾/出租车软件,帮助用户快速匹配司机,减少用户等待时间.让车主分享空余车位和乘客分摊部分油费,绿色出行,为拼车者免去了上下班挤公交地 ...

  9. 微信小程序——Web学习day4

    文章目录 课程介绍 小程序 为什么火起来了 前后端介绍 小程序注册 微信小程序登录 注册小程序账号 下载开发工具 创建小程序步骤 开发工具介绍 上传小程序到微信公众平台 项目目录介绍 课程介绍 小程序 ...

最新文章

  1. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34
  2. 设计模式之四(抽象工厂模式第三回合)
  3. mybatis动态SQL语句
  4. C++远征之封装篇——字符串类型
  5. 关于xfce中桌面没法显示回收站以及thunar中无法进行卷管理的解决办法
  6. Java并发编程实战_Java并发编程实战
  7. python判断成语是abac型_ABAC型的成语
  8. 【备忘】Android开发视频教程[共72课时] 视频下载
  9. html跳转按钮谷歌浏览器点击没反应,网页打印的按钮无效,点击打印没有任何反映!求解!...
  10. 王家林人工智能AI 第七节课:四种性能优化Matrix编写AI框架实战(Gradient Descent的陷阱、及几种常见的性能优化方式实战)老师微信13928463918
  11. Python数据分析基础(2)
  12. 【蓝桥杯】基础练习 十六进制转八进制
  13. 判断用户使用的浏览器是不是IE8
  14. 中国工程师成功扩容苹果 MacBook M1
  15. 卡斯特:中国是一个全球化的大试验
  16. 路径追踪 SAH优化的Bvh
  17. 基本算法之枚举:202.称体重
  18. 史上最全“Git插件+码云+分支” 使用步骤详解
  19. 马士兵 java 视频
  20. 剑指Offer 24 反转链表

热门文章

  1. UNIX 之父和 Linux 之父:创造新系统真的只是个意外 | 赠书
  2. 程序员的日常,过于真实 | 每日趣闻
  3. @程序员,什么键盘最耐用?| 每日趣闻
  4. python爬虫之微打赏(scrapy版)
  5. 【转载】并发数据结构
  6. mof提权原理及其过程
  7. #1045 - Access denied for user 'root'@'localhost' (using password: NO)
  8. 利用大数据,你将会购买更多的东西
  9. Redmine Feedback
  10. PHP删除数组(array一维)中指定的某个值 (转)