此文源自网络
网上很少能看到介绍OpenUI5的中文文章,有也是“SAP 开源的 JavaScript
框架,有点重”。首先我不去说OpenUi5到底有多重,先说说SAP为什么把OpenUI5开源,除了软件license法律上的原因之外。
先说说历史,SAP在UI框架上的选择其实也纠结了十多年了,是多年前,SAP就很有先见的推出了SAP
GUI,这个其实就是最早的BS框架,不过这个B是SAP自己的客户端而不是标准浏览器,但是遵循的就是三层框架。这个工具开发迅速,运行迅速,但是页面呆板,SAP页面开发都需要遵循特定的模式,但是这也是由于SAP针对的特定企业客户决定的,因为一个企业的应用程序数量往往比一个互联网网站多,为了方便统一的风格,而且便于客户的迅速学习,而且也便于迅速的开发,这样的设计是合理的。模式的概念一直在SAP延续,所有的程序要求模板化,样式一直也能快速开发。后来web 2.0时代SAP推出的Webdynpro基本上也延续了这一风格。
慢慢的,客户对于交互界面的要求越来越高,用户谈起SAP的界面,第一感觉就是丑,然后SAP开始谋求转变,也经过了痛苦的转型,SAP甚至投奔过微软的silverlight,哈哈,又是一个新玩意,有兴趣的同学可以查查微软的网站,最后silverlight无声无息了,这时候SAP觉得还是要有自己的UI框架,不能受制于人,于是投奔html5,有了现在的OpenUI5.
好了,开始进入正题,OpenUI5就是为了在写写在浏览器上跑的javascript框架么?不尽然,我们来分析一下下OpenUI5里面一些特点。
1. 首先,OpenUI5还确实是一个不错的javascript框架。如果你使用javascript来开发一系列产品,平台的选择有几点你是需要考虑的:
1) 有足够多的漂亮的控件而不是每一个都从原生的html开始写起
2) 有一个编程框架,比如MVC,便于各个团队代码的统一
3) 支持数据绑定。
4) 最少的代码,能开发同时支持桌面,平板和手机的UI。
OpenUI5都支持上面的特性而且还很好的整合在一起。我也使用过一些其他的开源产品做过一些项目,比如JQuery
Mobile, Angular, Knockout, Backbone,发现能不做修改同时支持以上特性的开源项目还是比较少,比如JQuery Mobile就只有控件和API,没有框架支持,而且开发的UI只在手机显示比较漂亮,Angular是一个很好的框架但是没有控件,也没有移动支持。我也尝试把两者结合在一起开发,但是额外的整合成本很高,比如使用html5的data标签render出来的div往往会和数据绑定冲突,这个题外话。OpenUI5提供了很多不算难看的控件和切换效果,支持MVC框架,而且支持多种数据绑定,比如JSON和OData,而且少量特定平台的代码,程序能同时在桌面,平板和手机上运行,比如SplitApp。
2. OpenUI5只是一个写Javascript的框架么?仔细研究一下OpenUI5的开发原则,所有的应用都被开发成一个component而不是一个html页面,component会被包含在一个容器里面,这个容器可以是一个简单的html
div,但是,SAP有一个launchpad的html页面,component会包含在这个称为lauchpad的容器中,这个容器能干些什么?这个容器可以按照用户的权限,显示用户能看到的应用,没有权限的应用用户是看不到的,而且用户可以按照用户的习惯,把容器里的应用的显示做一些调整,比如分组,位置。好了,移动portal的雏形出来了。像这个样子。
3. 仅仅一个portal够了么?不够,如果关心SAP,会发现SAP发布了一个叫Kapsel的浏览器,这个浏览器能干啥?首先,它是一个普通的浏览器,能跑html5和openui5程序;然后,它内部预置了OpenUI5的所有library,标准的library不用每次下载,其次,它能缓存OpenUI5的程序,由于容量限制,很多移动设备浏览器一般不会缓存程序,但是Kapsel会压缩缓存OpenUI5程序,然后按照修改更新。再其次,它里面还包含了cordova(以前叫做phonegap)的包,这样,OpenUI5可以在Kapsel上访问硬件设备了。
慢着慢着,怎么感觉这个浏览器不像一个浏览器,更像一个操作系统,不过本来现在操作系统和浏览器的区别越来越小。现在html5下浏览器又是webgl,又是本地缓存数据库,又是多线程,又是websocket,本来和操作系统没多少区别。想象Kapsel就是一个操作系统,用户打开Kapsel,可以看到自己所有的买过的程序,下载一次就如同现在移动设备上的应用安装,对于很多BYOD的用户,它直接安装一个Kapsel就如同安装了一个移动设备上的设备管理器,企业的应用都在这个设备管理器内部管理,而且Kapsel还是一个企业内部的app
store,你能看到你自己所有经过授权的程序。没有授权的程序你也无法访问。
看到这里,似乎有些想法了,SAP去年还不是有风声要收购黑莓吗?为什么?把这个Kapsel直接架在黑莓硬件上,不就是一个WebOS?这样,OpenUI5对这个WebOS就如同object C对IOS,Java对Android,就是一个应用开发语言了。仔细看OpenUI5的一些设计,比如component的routing,怎么那么像android的activity。
好了,知道为什么SAP为什么要将OpenUI5开源了,大家都来用OpenUI5写程序,大家用的多了,生态圈建好了,以后,这些程序就可以直接放到SAP的Kapsel浏览器甚至Kapsel OS上去了。
4. 这个是OpenUI5的全部么?还不是?毕竟Kapsel是一个针对企业的浏览器,还有一些其他针对企业的特点,比如
1) 和SAP Mobile Plateform的集成。你用OpenUI5开发了好多应用,那么可能数据服务来自于很多服务器吧,比如说企业有HCM服务器,有CRM服务器,你打开每一个应用难道都要去配置连接到哪个服务器?不用的,你只要把你的Kapsel指定到一台SAP的SMP服务器上,这个服务器上托管了所有的OpenUI5程序,同时这个服务器也配置了不同OpenUI5程序的数据服务器地址,这样,你的数据请求会按照SMP服务器的配置转发到配置的真正服务器上,实现了服务器的统一管理。应用程序的授权也在这台SMP服务器上。
2) 按照权限的跳转。在你的OpenUI5程序中,如果你要跳转到其他的应用程序,会按照你权限的不同跳转到不同的应用程序上,比如在你的程序里面你说要跳转到销售订单,那么你是经理还是业务员跳到的应用程序也是不一样的,这也是一些企业程序的特点。
还有很多,不扯了,所以看OpenUI5不仅仅是一个javascript框架(虽然是一个不错的javascript框架),将来也可能是一个app的标准开发语言,他的开源不像以前MaxDB的开源,重要的是修建一个新的APP的开发人员合作圈。
末了,补充一下,OpenUI5的核心大概900K,包含JQuery的包,但是可以分为很多包on-demand加载。如果你需要使用一些其他服务比如D3,也另外加载。也不算太重,而且可以包含在Kapsel浏览器中。