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

本文转载于:猿2048→https://www.mk2048.com/blog/blog.php?id=h00bbc2abaa

小程序web开发框架-weweb介绍的更多相关文章

  1. 一套代码小程序&Web&Native运行的探索05——snabbdom

    接上文:一套代码小程序&Web&Native运行的探索04——数据更新 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/ma ...

  2. 一套代码小程序&Web&Native运行的探索03——处理模板及属性

    接上文:一套代码小程序&Web&Native运行的探索02 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/master/m ...

  3. 小程序 web 端实时运行工具

    微信小程序 web 端实时运行工具 https://chemzqm.github.io/wept/

  4. 一套代码小程序&Web&Native运行的探索06——组件系统

    接上文:一套代码小程序&Web&Native运行的探索05——snabbdom 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tre ...

  5. 一套代码小程序&Web&Native运行的探索04——数据更新

    接上文:一套代码小程序&Web&Native运行的探索03 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/master/m ...

  6. 一套代码小程序&Web&Native运行的探索02

    接上文:一套代码小程序&Web&Native运行的探索01,本文都是一些探索性为目的的研究学习,在最终版输出前,内中的内容可能会有点乱 参考: https://github.com/f ...

  7. 微信小程序 - 结构目录 | 配置介绍

    结构目录 小程序框架提供了自己的视图层描述语言 WXML 和 WXSS,以及 JavaScript,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑. 一.小程序文件结构和传 ...

  8. 微信小程序云开发框架

    概述 一直做后端服务器开发,最近看了一篇文章介绍小程序的云开发模式,觉得挺有意思,就尝试了一下,由本文做个记录. 因为不是专业的小程序开发人员,也没有做过网页开发,所以论述中出现错误难以避免,请多谅解 ...

  9. 一套代码小程序&Web&Native运行的探索07——mpvue简单调研

    前言 接上文:[一套代码小程序&Native&Web阶段总结篇]可以这样阅读Vue源码 最近工作比较忙,加之上个月生了小孩,小情人是各种折腾他爸妈,我们可以使用的独立时间片不多,虽然这 ...

随机推荐

  1. Spring Cloud Gateway 不小心换了个 Web 容器就不能用了,我 TM 人傻了

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  2. laravel7 手机号验证码登陆

    1"设置路由: //展示手机登录页面 Route::get('admin','admin\AdminController@admin'); 2:html页面 <!DOCTYPE HTM ...

  3. tensorflow源码解析之framework-function

    目录 什么是function FunctionDef 函数相关类 关系图 涉及的文件 迭代记录 1. 什么是function 在讲解function的概念之前,我们要先回顾下op.op是规定了输入和输 ...

  4. CentOS 8 关闭 Firewalld 及 SELinux

    检查 SELinux 是否开启 执行 sestatus 指令可以检视目前 SELinux 的状态, 其中一项是是否有开启, 执行以下指令: # sestatus | grep status 如果看到 ...

  5. 2022:checking for Python executable "python2" in the PATH

    目录 一.node报错 说明 1.网上常用方法一(本博主环境无效) 2.网上常用方法二(本博主环境无效) 3.本博主使用方法(当前有效) 1.确保NodeJS环境安装没有问题,如果不会安装,请参考 构 ...

  6. MySQL存储引擎,索引及基本优化策略

    存储引擎 与Oracle, SQL Server这些数据库不同,MySQL提供了多种存储引擎.什么是存储引擎?存储引擎其实就是一套对于数据如何存储,查询,更新,建立索引等接口的实现.不同存储引擎特性有 ...

  7. C++设计模式 - 备忘录模式(Memento)

    状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了一种解决方案. 典型模式 Sta ...

  8. Arch Linux 系统迁移

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 备份 Arch Linux 系统 安装 pigz 使用 pigz 多线程压缩比使用 tar 单线程压缩速度明显提升多倍 sudo pacman ...

  9. MySQL数据库阶段学习目录

    MySQL数据库学习目录 MySQL数据库初识 MySQL的库表详细操作 MySQL行(记录)的详细操作 快捷使用数据库.表.表内容增删改查 MySQL之单表查询 MySQL之多表查询 Navicat ...

  10. 安装backbox和win7双系统记录

    安装backbox和win7双系统记录 描述 主机已先安装win7,通过ultralISO制作启动盘安装backbox 错误一: error paring from pcc... 这个错误是我在从U盘 ...