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 <port> 指定服务端口,默认 2000
  • -d, --dist <dir> 指定生成的路径
  • -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地址

https://github.com/wdfe/weweb。

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

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

    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. DIY机器人?硬件创新也是潮流
  2. 【143】360云盘资源
  3. 浙江理工大学电信宽带校园网访问添加路由表命令(Windows和Liunx)
  4. PPT如何让多对象排列整齐
  5. 计算机图形学知识点整理(一)
  6. Mac os 下的文件权限管理
  7. Tomcat下快逸报表中文乱码问题怎么解决
  8. 【书籍阅读】-人在回路机器学习 Human-in-the-Loop Machine Learning(一)
  9. Unity打包ios应用并上架appstore审核的一些备忘
  10. 计算机注销操作,电脑注销快捷键
  11. 服务器插sata硬盘启动不了怎么办,双SATA硬盘启动无法进入系统故障解决办法
  12. cisco服务器桌面命令行窗口,WLC调试和显示命令
  13. 新浪微博授权失败,redirect_url与应用注册的网址不一致
  14. 电商行业特点以及理解电商的模式
  15. 为什么要研究引起潜在大流行病的病原体?
  16. componentWillReceiveProps为什么deprecated
  17. 交换机端口镜像及其工作原理
  18. Power BI(十五)power pivot之Summarize函数
  19. 【前端学习】Git的安装和基本使用方法和环境变量配置 时光大魔王
  20. 【CS224图机器学习】task1 图机器学习导论

热门文章

  1. 初涉springboot(一)
  2. Winfrom窗体无法关闭问题--检查是否存在重写
  3. vscode-go 插件安装
  4. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
  5. js渐渐入门之懒人框架- laz.js
  6. 如何从应用直接跳转AppStore 电话 短信 邮件
  7. Redo丢失的4种情况及处理方法
  8. NSS_08 extjs表单验证
  9. .NET中的设计模式——一步步发现装饰模式
  10. 齐次坐标和单应性矩阵