今天继续由SAP成都研究院著名的菜园子小哥Wang Cong,给大家分享他作为一个SAP前端人员是如何看待SAP UI5和微信小程序的异同点的。

关于Wang Cong种菜的手艺,大家请移步到他以前的文章 SAP成都研究院非典型程序猿,菜园子小哥:当我用UI5诊断工具时我用些什么 去观摩,这里不再赘述。

下面是他的正文。


近几年微信小程序发展之势如火如荼,越来越多的用户放弃原生App,转而投入小程序的怀抱,大有"一个微信行天下"的趋势。

面对如此巨大的流量机遇,百度、阿里等公司也纷纷在自家的核心产品中推出小程序功能,欲与腾讯的微信在这场入口大战中一较高下。至少在今天看来,微信小程序的生态圈依然是其中最为繁荣的。

同为"前端框架",SAP UI5与微信小程序有着诸多异同点。这里我们摘取其中本人觉得比较有特点的方面进行对比,看看二者相似的表象下隐含着哪些设计理念上的区别。

本文仅代表作者个人作为一个前端开发人员的个人观点。

UI5是SAP开发的一套开源的前端框架,而微信小程序则是局限在微信内部,表现形式类似于普通App。

虽然两者的核心(或者说大部分功能)都是与用户进行交互,但从架构的角度看,存在很多本质上的不同,我们可以从接口的角度窥见一二。

入口

UI5不依托任何平台,通过UI5实现的页面可以从多种入口进行访问,基本上只要支持浏览器功能的平台,都可以访问UI5页面。而微信则是微信小程序的唯一入口。

后端

UI5是一个纯粹的前端框架,对于后端没有做任何的限制,同时也没有任何的支持。微信小程序不但允许你自由地选择后端,而且提供了一些基础的后端支持,在很多情况下开发者甚至无需搭建自己的服务器,就能满足需求。这些支持有:

**(1) 数据库:**微信小程序提供远端的类似MongoDB的JSON数据库支持,用户不需要购买数据库,也不需要任何复杂的前期配置,就能在小程序中直接对JSON数据库进行增删查改等操作。

**(2) 存储:**类似于上面提到的JSON数据库,用户可以在微信小程序中直接利用免费且免配置的远端存储空间来存储文件。

**(3) 云函数:**除了数据库和存储之外,微信小程序还提供了后端逻辑的支持。云函数可以理解成一个功能有限的后端服务器,也可以理解成一个运行在云端的JavaScript方法。优点是方便,一键部署而且免费。缺点是功能有限,无法实现复杂的后端功能。

以上功能全部免费免配置,如果发现免费的配额不够,可以申请提升配额或考虑自己搭建服务器。

访问限制

作为开放的框架,UI5对于外部访问没有做任何限制。而微信小程序则有着严格的审核机制,首先要访问的链接必须是https的安全链接,其次地址必须提交给微信进行审核,审核过后还需维护在小程序后台的访问列表当中。

如果上述步骤没有做好,就连腾讯自己的官网都无法访问。其实这样做的原因也很容易理解:用户通过微信小程序访问的所有链接,最初的入口都是微信本身,这也是微信为了自身生态安全而做的必要控制。

但这项限制在本文发稿时为止还不是特别完善。因为云函数尚未对访问做限制,开发者可以使用云函数作为路由,访问未经审核的链接。

从上面和下面两张图中我们可以看出UI5应用和微信小程序在接口方面的区别,其中虚线框内分别为UI5和微信小程序框架内所提供的功能范围。

技术细节

一个熟悉SAP UI5的前端开发人员,上手微信小程序应该没有什么难度。两者同为前端框架在设计上自然有很多相似的地方。例如:

(1) 在微信小程序中的app.js极其类似于UI5中的component.js,都代表整个应用的一个全局实例。某些作用范围为全局的方法或数据都可以存于其中。

(2) 两者在数据绑定方面,都支持灵活的表达式绑定,将更多的本应出现在controller层的逻辑向前推放到view层当中,简化逻辑层。

(3) 两者都支持列表渲染,例如UI5中的ListBase中的items属性,而微信小程序中则是通过wx:for属性实现同样的功能。

(4) 两者都支持自定义控件/模板,UI5有component和custom control,微信小程序有component和template。

但两者也有很多技术上的区别,例如:

(1) 前文提到的列表渲染,UI5仅支持对列表类控件的子控件进行列表渲染。而微信小程序则显得更加灵活一些,任何一个控件都可以通过wx:for属性进行重复渲染。例如上面例子中被重复渲染的就是image元素。

(2) 除了列表渲染,微信小程序更支持wx:if的条件渲染。即if条件检测的结果为true时渲染,为false时则忽略。UI5中实现类似功能则更多是通过控制visible属性来进行。

(3) Routing的实现。两者都是使用栈的方式记录跳转的历史,但是与UI5的"宽容"不同,微信小程序最多仅支持5层跳转。

如用户需要继续向下访问,则必须通过其他workaround实现,例如通过redirectTo将栈顶的旧页面弹出栈,换成新页面。

(4) 数据绑定方面。

UI5的数据绑定功能极其强大,支持各种类型的数据模型的排序和筛选,并且提供双向绑定和单向绑定多种绑定方式。另外数据在view层和controller层的反馈也更加积极。

关于SAP UI5和Angular数据绑定的比较,可以参考Jerry这篇文章:

https://blogs.sap.com/2016/06/30/compare-data-binding-mechanism-sapui5-and-angular/

关于SAP UI5和Vue数据双向绑定的实现区别,可以参考Jerry这篇文章:

https://blogs.sap.com/2017/06/14/two-way-data-binding-ui5-vs-vue/

相对而言微信小程序的数据绑定功能要稍弱一些。首先不提供排序和筛选功能。另外反馈也不够积极:view层改动数据模型需要借助触发事件来调用controller层中的方法进行手动赋值;controller层在更改模型时也必须通过setData方法,才能让改动在view层中生效。

(5) 微信小程序的底层是"巨人"微信, 因此可以借助微信方便地调用很多硬件以及软件API,例如:NFC,WIFI,蓝牙,微信运动,生物认证,二维码,登陆以及支付功能等。

(6) 纵观两者的控件库,我们可以发现UI5可谓大而全,就连一个表格都要提供responsive table,grid table,smart table等, 目的就是为了支持尺寸各异的不同设备以及各种业务场景。而微信小程序则极其专注在移动端的常用控件,轻量,简易且统一。

理念

综合以上的比较,我们可以大致发现UI5和微信小程序自面世起便肩负着不同的使命。

UI5是SAP为其自研的企业管理软件前端页面所设计的前端框架,以此来实现SAP推荐的Fiori风格的前端应用。它的出现体现了SAP对于确保未来产品拥有统一风格,友好界面和良好用户体验的决心。

而微信小程序虽然小,却足以彰显微信扩张的雄心:通过丰富的前后端支持以及简易的上手体验,实现生态圈的急速扩充。而入口和外部访问的限制则是快速扩张的同时,仍然恪守的那份理智。轻量,小巧,快速,简易,移动,一站式。微信想要对你说的是,你的生活,被我承包了。

关于SAP UI5和微信小程序,SAP成都研究院的开发人员们做过很多研究,如果您想进行更多阅读,可以参考下面的链接:

(1) 我的同事,SAP成都研究院大卫哥Wu David的文章:SAP C4C中国本地化之微信小程序集成

(2) 以前Jerry写的SAP UI5框架代码自学教程

(3) Jerry在SAP社区上发表过的59篇SAP UI5相关的文章合集

(4) Jerry和您聊聊Chrome开发者工具:关于Chrome开发者工具一些搞笑的故事

(5) Jerry通过自己调试的方式解决过的UI5的问题合集:

https://blogs.sap.com/2016/04/30/my-ui5-debugging-tips-and-experience-collection-how-to-resolve-ui5-issues-through-debugging-by-yourself/

(6) Jerry日常工作中使用Chrome开发者工具积累的一些技巧:

https://blogs.sap.com/2016/03/15/chrome-development-tool-tips-used-in-my-daily-work/

(7) Jerry的碎碎念:SAPUI5, Angular, React和Vue

(8) Yang Joey的文章:SAP Cloud for Customer 使用SAP UI5的独特之处

(9) 我自己的文章:当我用UI5诊断工具时我用些什么

(10) Jerry的文章:在Kubernetes上运行SAP UI5应用

(11) Jerry的文章:SAP Fiori + Vue = ?

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

SAP UI5和微信小程序对比之我见相关推荐

  1. SAP UI5和微信小程序框架里的全局变量

    SAP UI5 in global variable sap.ui there are many useful utility service available, such as current b ...

  2. 微信小程序(一)基础知识

    最近想大概的了解一下微信小程序的基础部分知识,这是一份微信小程序基础总结! 什么是小程序 ? 如何全面具体的学习? 注册与新建小程序 认识开发工具 目录结构与代码构成 JSON 配置文件 WXML 模 ...

  3. 微信小程序周报(第五期)

    印度同事说起他信教的经历:他梦见自己前世是名叫某某的禅师,醒来后上网查这个名字,居然真有这个人,而且确实是个禅师,从此他就皈依佛祖了. 我一边点头一边想的是:科技改变生活真不是白说的. 最近微信官方一 ...

  4. 微信小程序商城 java后台

    微信小程序学习 最近工作正好有闲暇时间,根据公司安排先前期学习调研一下"微信小程序",以供后期解决相关的运营需求,而本篇文章就是我对此次学习的一次总结. 什么是小程序 ? 如何全面 ...

  5. SAP成都研究院大卫哥:SAP C4C中国本地化之微信小程序集成

    今天的文章来自Wu David,SAP成都研究院C4C开发团队的架构师,在加入团队之前曾经在SAP上海研究院工作,组内同事习惯亲切地称呼他为大卫哥. 大卫哥身高据Jerry目测有1米8以上,是成都C4 ...

  6. 使用mpvue开发微信小程序——原生微信小程序、mpvue、wepy对比

    mpvue是什么?为什么使用它? 目前小程序开发主要有三种形式:原生.wepy.mpvue,其中wepy是腾讯的开源项目:mpvue是美团开源的一个开发小程序的框架,全称mini program vu ...

  7. 微信小程序 android内存暂用,微信小程序与手机APP占用内存 流量消耗对比介绍

    10年前的1月9日诞生了iPhone,今年的1月9日诞生了微信小程序,这无疑是2017年中国互联网圈的开年大事件.这几天,相信大家在网上到处都被微信小程序刷了屏,各种技术探讨.前景分析层出不穷,尤其是 ...

  8. c++小程序代码_# 微信小程序的原生框架和taro对比 ##

    微信小程序的原生框架和taro对比 小程序历史(为什么会出现?) 2007年 iPhone H5 大家知道现在手机端主要是iOS.Android两大系统,实际上在早期有3大系统竞争,还有一个就是诺基亚 ...

  9. 微信小程序和PWA对比分析

    微信小程序和PWA对比分析 微信小程序和PWA(Progressive Web App)是目前移动端以及前端受关注度较高的两项技术.小程序自去年公测以来,国内很多公司均投入到小程序的开发中,今日头条. ...

最新文章

  1. m1芯片支持php,M1芯片兼容性怎么样 M1芯片软件兼容好吗
  2. java 调内存_java内存设置
  3. 4G EPS 中的随机接入
  4. TPC-W 一个实验结果和分析
  5. 类和对象:给大家介绍对象
  6. .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
  7. mac下pip install 安装只能选择python2.7的问题
  8. float浮点数的四舍五入
  9. c语言实验报告问题错误分析,C语言实验报告
  10. 解密七种html网页加密解密法
  11. 学爬虫的动力是啥?那肯定就是爬美女图片了。6千多图片看到爽。
  12. Arduino系列之米思齐旋钮控制LED灯亮度
  13. Python 解析log日志
  14. PyCharm下载插件失败解决方法
  15. Python进阶【第一篇】socket
  16. FPV无人机集训召集令~
  17. VC++6.0出现error spawning解决方法
  18. 凉拌菜---竹报平安
  19. Android布局深究(六)——AbsoluteLayout(绝对布局)
  20. 荣耀30s是否搭载鸿蒙系统,荣耀30S来袭 3月30日发布或配麒麟820芯片

热门文章

  1. 高考舞弊案背后的“文化魔咒”—— 如何整顿学风?(教育的失败!社会的...)...
  2. 文献学习(part11)--基于知识图谱的推荐系统研究综述
  3. linux 文件服务,linux系统文件服务
  4. python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化
  5. 加权最小二乘法的原理讲解
  6. 体验 Orbeon form PE 版本提供的 JavaScript Embedding API
  7. 腾讯虚拟主机上的端口开放问题
  8. SAP Spartacus Template-Driven Outlets
  9. SAP Hybris Commerce installer目录下的build.gradle
  10. 利用Object.defineProperty挂接set钩子,监控对象属性的修改事件