移动Web富应用框架RAIS发布
先看看RAIS能做什么
简介
RAIS是专注移动端的Web富应用解决方案,它提供开发Rich Web App的MVVM框架、基础组件、编译工具、调试插件等全链路开发工具,帮助开发者快速高效构建具备优秀交互体验的Web应用。
更多信息请参见官网 http://rais.tmall.net
为什么?
从hybrid模式兴起到现在已有数年,依托海量的Web开发者群体与PC时代积累的基础设施,Web在移动端的占比大幅攀升。但在用户体验要求越来越高的今天,Web页面的体验瓶颈也愈发明显:
打开速度慢。以高度动态化为核心的设计思想在今天的高速网络环境下反而拖累了加载速度,仅仅加载一个页面的基础UI部分就需要10-20个网络请求,并且悲催的是部分资源是需要顺序执行的,这在争分夺秒,哦不,争秒夺毫秒的移动端上显然水土不服,虽然通过各种缓存策略得以缓解,但是由于需要保证资源加载时序,“单点故障”效应仍然是拖累加载速度的最大杀手。天猫H5页面平均秒开率在iPhone 65%(均值1200ms),Android 35%(均值2000ms)左右,这让“H5页面打开慢”的标签难以撕掉。
交互瓶颈。Web内核在移动端交互层面的支持远不及Native UI,这导致在下拉刷新、切页动画、多页状态保持、页面滚动等等交互体验上与Native UI有明显差异,所以大多数人选择在Native中实现视图功能和浏览链路,而在Web内实现单个页面的UI元素,这使得每个页面切换都需要重新载入页面,闻起来还保持的上世纪PC页面的气息。
体系化框架缺失。在今天崇尚简单快速操作的移动端,缺乏体系化的组件框架和开发工具,多数开发者在开启一个项目前,往往要纠结于技术选型,而最终只能选择用零散的组件拼凑页面。
我问过不少同学,如何区分H5页面与Native页面?得到的答案五花八门,比如:“页面布局不稳定,从上往下加载的是H5”、“滚动没停止时图片出不来的是H5”等等,当然最多的答案还是“打开要白屏一两秒钟的是H5”
所以RAIS的初衷,正是解决移动Web的交互体验和全链路开发体验问题。
而近两年站在风口的React Native以及我们自己的WEEX,与其说给Web端开发者带来了希望,倒不如说,NativeUI+WebDSL的兴起让我们看到了他们对移动端H5的绝望。好,那么问题来了,我们为什么要死磕H5呢?
我们认为,Web的优势在于高度动态化、灵活的UI模型以及海量的开发者群体。如果用一句话来概括WebUI的灵活性,那就是“没有什么UI布局是一个 position:absolute 搞不定的,如果有,那就两个”。当然,这是句玩笑话。NativeUI+WebDSL的硬伤在于任何WebDSL终究无法还原真正的WebUI模型,这使得其开发效率要追赶H5,尚需些时日。而Web标准是所有Web开发者多年达成的共识,短时间内难以被新标准取代。 而今天移动端Web的窘境,是我们还远没有做好。许多人相信“H5是终局”,但是要“再等等”,那句话叫什么来的?“幸福不会从天降,共产主义等不来”(原谅我抄了这么low的slogan)。而且,在手机硬件更新换代远快于PC的年代,我们相信在一两年内,将会是移动Web的大时代。回想当年PC,BS大规模替代CS的时代,又用了几年呢?
另外,Apple对除自身的 built-in webkit 外的动态SDK的态度比较暧昧,2017.3.8 发出的大量开发者警告可见一斑。
RAIS是如何解决这些问题的?
体验瓶颈突破与基础组件封装
打开速度。RAIS会将资源打包,将代码请求减少到1个(使用预加载情况下则无请求);首屏通过数据配置实现优先渲染。一般用户从看到界面到手指滑动界面通常在1.5s以上,极端情况也至少需要800ms,因此在首屏展示至用户操作间,可以让用户在无感知间完成二次渲染。RAIS目前的线上页面iPhone秒开率达到93%(均值430ms),Android秒开率达到82%(均值860ms)。
滚动阻塞。在UC3内核和iOS的UIWebView中存在使用滚动页面时,JavaScript停止执行的问题,导致在滚动期间的懒加载图片以及节点回收等无法执行。RAIS提供了ScrollView组件解决此问题,并保证较好的性能。
下拉刷新。基于ScrollView的实现,纯Web的下拉刷新也成为可能,RAIS提供了pulldown-scrollview以支持下拉刷新操作。
长列表实时回收。RAIS提供ListView组件,以支持长列表实时进行UI对象回收,在ListView里可以看到加载10000条数据流畅滚动的例子。
曝光事件。RAIS提供appearance模块,以支持元素曝光/隐藏时的事件派发
MVVM与高性能
RAIS提供了MVVM的App框架,并在内置的directive提供了针对移动端模式的性能优化方案。比如在 repeat directive 中,提供了from x to x功能,开发者可以更改显示范围,repeat directive 能够以最佳复用率复用UI对象,ListView就是基于此功能实现的。
多页应用
RAIS可构建高性能的单视图应用,也提供了多视图和路由系统,提供可自定义切页动画的视图切换。同时,支持视图缓存,可在路由中配置当前视图在下次访问时使用上次的缓存对象还是重新渲染。使用缓存视图可保持上次一操作的状态,比如上一次列表滑动的位置。
更多特性可以移步官网 http://rais.tmall.net 查看。
RAIS提供哪些框架和工具?
- RAIS框架 & 移动端基础组件库
- 编译器 & 工程脚手架 & 周边工具和Chrome开发插件
- RAIS 模块贡献机制 & 最佳实践
RAIS Chrome 调试插件
自己试试?
请移步这里 http://rais.tmall.net/guide/rais/quickStart/ 快速搭建一个RAIS App
目前已知的问题和解决方案
- Android低端机在U3内核下滚动有卡顿现象,预计3月中旬支持在U4及Chrome内核上使用native-scroller
- 暂不支持横划手势返回,预计在3月中旬支持
- 在Chrome56上调试时,滚动Scrollview时会有警告。此为Chrome在56版本中的更新修改的特性,预计在3月中旬修复
最后
对WebApp方向有兴趣的同学欢迎随时向我们吐槽、建议、贡献、合作。
RAIS框架 http://gitlab.alibaba-inc.com/groups/rais
移动组件库 http://gitlab.alibaba-inc.com/groups/rais-mobile
移动Web富应用框架RAIS发布相关推荐
- Capybara 2.14.1 发布,Web 应用验收测试框架
apybara 2.14.1 已发布,Capybara 是一个 Web 应用验收测试框架,通过模拟真实用户交互的方式来测试你的 web 应用.它内置 Rack::Test 和 Selenium 支持, ...
- DWZ富客户端框架使用手册
概述 DWZ富客户端框架(jQuery RIA framework),是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. DWZ富客户端框架设计目标是简单实用.扩展方便.快速开发.RI ...
- 基于MVC的JavaScript Web富应用开发
基于MVC的JavaScript Web富应用开发 (美)麦卡劳(MacCaw,A.)著 李晶,张散集译 ISBN 978-7-121-10956-0 2012年5月出版 定价:59.00 元 16开 ...
- 10个优秀的 Web UI库/框架 详细出处参考:http://www.jb51.net/web/22251.html
点评:UI(User Interface)即用户界面,也称人机界面.是指用户和某些系统进行交互方法的集合,实现信息的内部形式与人类可以接受形式之间的转换.本文为WUI用户整理了10个优秀的 Web U ...
- 10个优秀的 Web UI 库/框架
来源:http://www.webjx.com/web/xindejiqiao-10467.html UI(User Interface)即用户界面,也称人机界面.是指用户和某些系统进行交互方法的集合 ...
- DWZ富客户端框架设计思路与学习建议
DWZ富客户端框架设计目标是简单实用.扩展方便灵活.快速开发.RIA思路.轻量级 设计思路 第一次打开页面时载入界面到客户端, 之后和服务器的交互只是数据交互, 不占用界面相关的网络流量. 支持HTM ...
- 更加简洁易用——wangEditor富文本编辑器新版本发布
1. 前言 wangEditor富文本编辑器(www.wangEditor.com)从去年11月份发布,至今已经有将近10各月了.它就像一个襁褓中的小婴儿,在我的努力以及众多使用者的支持下不断摸索.成 ...
- web富文本编辑器的选择のxheditor
最近在研究web富文本编辑器,处理知道的 1.老牌fckeditor 网址:http://ckeditor.com/ 2.百度退出的ueditor 网址:http://uedito ...
- Python Web开发——Django框架学习
文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...
最新文章
- Spring 视图解析
- IDEA 2022.2.1 Beta 2发布:新增支持Java 18、增强JUnit 5的支持
- 使用rmi实现ehcache集群模式
- 3.Booleans and Conditionals
- logagent同步mysql_LogAgent的工作流程
- 关于Android 的内存泄露及分析
- java.util.List 的大小
- 手机浏览器哪家强,这3款口碑极佳的浏览器值得一用
- python爬虫qq音乐歌词_10、 在QQ音乐中爬取某首歌曲的歌词
- python自动化交易_python 优矿自动化交易
- 数学建模暑期集训24:机器学习与Classification Learner工具箱实操
- 组合dp hdu-4489-The King’s Ups and Downs
- 为什么ps因为计算机限制,photoshop为什么经常崩溃 ps防止崩溃解决办法
- 小程序视频不显示进度条,且不能滑屏快进
- arcgis快速生成图框_arcgis制作图框及专题地图制作
- linux类似的vlookup函数,VLOOKUP函数的使用方法介绍 VLOOKUP函数的操作实例
- 程序中中文乱码问题的总结
- Word2Vec增量训练实现
- Ubuntu下基于Wine环境安装Visio2007
- 华为特聘PPT设计师年薪百万:改变你的不是打卡,而是坚持
热门文章
- 【开讲啦】20150814 余秋雨:寻找远方的自己
- ubuntu下搭建不同端口网站
- 旷视回顾全球十大AI治理事件,技术与伦理安全如何进行落地
- Django-应用与分布式路由
- 【笔记】笔记本查看电池损耗,一句命令搞定!(附笔记本电池使用技巧)
- pip清华源(清华大学国内镜像)安装地址
- 如何使用图片的exif信息计算相机焦距
- 分享一个CCLE细胞系数据(CCLE数据库不能用了吗?)
- “双料王”傍身,极智嘉Geek+成功开辟行业新蓝海
- 科学计算机上的符号是什么意思,计算器上各个符号是什么意思_计算器各键说明【图文】-太平洋IT百科手机版...