1.uni-app是为了解决跨端应用开发问题而设计的前端框架
简单来说uni-app是一个为了解决跨端开发问题而设计的前端开发框架,开发者通过uni-app编写的代码可以发布到iOS、H5平台。
结合uni-app官方提供的IDE工具,你还可以直接使用第三方小程序开发工具(如微信开发者工具、百度开发者工具等)中的HTTP服务,对第三方开发者工具中IDE中编写的代码进行编译预览并打包成相应的小程序资源。
可直接调用第三方开发者工具运行小程序
本质就是调用小程序开发工具外部接口的能力。
它是一个运行小程序的前端框架
如果想将小程序的能力集成到已有的App中,也可以使用uni-app推出的小程序SDK(官方称,只能在基于uni-app开发的原生应用中使用)。在iOS或者应用中集成相应的功能,同样可以达到维护一套小程序代码,在两个客户端都运行的效果。
uni小程序SDK引入文档
此外,uni-app还为开发者提供了相对丰富的生态资源,比如提供了官方的插件市场功能,开发者可以根据业务选择在自己的应用或者小程序中集成插件,也可以成为插件开发者,上传分享自研的插件资源。
经过多年的发展,uni-app 已经具备了相当的成熟度和社区资源。很多开发者可以从学习 Vue.js 前端语法开始,借助 uni-app 就可以快速编写跨端移动应用。此次上线后,开发者还可以在自己的移动应用中运行小程序。
但是uni-app依然无法解决原生开发中的一些问题:
如果回到正题(uni-app提供的小程序SDK),同样存在一些体验不佳的问题:
除了官方社区,在很多地方都能发现用户不同的声音,比如在知乎的这篇问答《都2021年了,开发得怎么样了?》中,就有很多关于uni-app的不同看法。
有网友用“小无相公”来形容
它是一个轻应用平台,也是企业数字化转型的连接器。
与uni-app不同的是,的定位并不是跨终端应用开发框架,而是一个轻应用(小程序是轻应用的一个子类)技术平台,由以下几部分组成:
您可以在“产品手册”中了解更多产品信息
通过安全沙箱、应用商店和开发工具的结合,开发者可以愉快地使用这一系列工具完成小程序的设计和开发(以及后续的生命周期管理)。
在实际工作中,我们经常遇到的一个问题是“虽然市面上已经有不少小程序平台(如微信小程序、字节小程序、百度智能小程序、支付宝小程序等),但由于微信的头部流量地位,很多时候我们会先为微信平台开发小程序,然后再根据实际业务场景选择将小程序迁移回自己的应用中”。
在这个过程中,是否一次性将小程序上线到多个小程序平台的决定很难由业务方(或甲方)在项目之初做出。由于“微信”作为全民应用在市场上的作用短期内无法被其他应用取代,因此大部分企业在权衡利弊后都会做出这样的选择,即“先将微信小程序上架,再将微信小程序迁移到自己的移动应用上”。在这个过程中,可能还会涉及到通过小程序改造现有应用中的H5业务。因此,我们关注的内容会这样变化:开发微信小程序→将微信小程序迁移到自己的应用中→部分应用小程序暂时不会上线微信,但也需要有统一的语法和框架,学习和迁移成本不能太高。
随着你对 的了解逐渐深入,你会慢慢感觉到二者之间的设计思路也有不同(作为前端开发框架,不再比较):
与 SDK 比较
由于我们更加关注小程序全生命周期的相关事宜,所以我们也将所有的研发力量都放在了“让我们自己APP里的小程序能够像微信里的小程序一样流畅运行”这个问题上。因此,无论是iOS应用、APP、应用、RN应用,甚至是应用程序,无论是微信小程序还是基于第三方框架设计的小程序,都可以将SDK集成到其中运行。
通过管理后台,我们还可以管理小程序的描述信息(如头像、标题)、关联应用(关联到某一个移动应用)和小程序版本,解决小程序热更新,满足运营需求。即使开发者没有在应用商店发布和更新App,我们依然可以更新小程序资源。只要用户安装并打开App,我们就能根据规则库的配置,实现小程序“千人千面”功能。
2.实际使用
前面说了,由于只支持基于uni-app框架生成的小程序代码,所以我们先尝试生成一个第三方小程序DEMO,看看有什么区别。
首先,在
创建成功后,选择在微信开发者工具中运行
代码在微信开发者工具中可以正常运行
代码在IDE中也能正常运行
接下来我们尝试运行一个原生的微信小程序,看看它是否可以在FIDE或uni-app中运行。
在微信开发者工具中选择基础模板
创建成功后可以运行
小程序代码也可以在 IDE 中运行
在,你只能将代码编译成微信小程序
正如官方文档所述:
这意味着:如果你想把现有的微信小程序移植到自己的App中使用,是不能使用(uni-app)的,除非这个小程序原本就是基于uni-app设计的;如果你想将小程序集成到现有的App中,也只能在原生App中集成(iOS也行),无法通过打包好的多端App来集成对应的小程序。
此外,通过对比管理后台我们会发现,在uni-app中,除了向开发者提供应用管理(含统计分析)外,更多的是围绕“广告联盟、插件市场、云端打包增值服务、短信验证码和一键登录”等功能提供增值服务,对于小程序本身的关注范围有限。
开发者中心
在管理后台,围绕小程序、应用、开发、数据统计等功能,提供完善的小程序全生命周期管理服务。无论是小程序相关的版本审核与上架、灰度发布规则的制定与执行,还是安全相关的域名与证书管理,都是围绕小程序和应用本身提供相应的服务。
管理后端
为什么说下架移除小程序可以解决应用热更新的问题呢?很多时候,用户在应用中点击小程序后,会通过网络服务请求小程序相关的资源。如果小程序背后的业务出现故障不可用,则必须更新应用才能解决这个问题。现在,可以直接在管理后台下架小程序,而不需要对应用做任何改动。当用户在应用中点击小程序时,会直接提示应用已被下架,避免直接在用户侧造成业务故障。
概括
至此,我们对两款产品的差异性进行了初步的对比,虽然在初次了解产品时,可能会因为产品描述和宣传的差异而混淆相同与不同之处,但读者应该能感受到两款产品有着本质的区别。
3. 根本的区别是什么?
在上一篇文章中我们对uni-app和 做了初步的比较,uni-app是一个前端应用开发框架,而 是一个轻应用平台。作为前端开发框架,主要目标是通过封装不同的功能,提供一整套解决方案,尽可能的降低开发者的开发成本。
从这个角度来看,uni-app确实解决了前端应用跨端研发面临的问题,在一些展示型或者小场景定制的项目中,确实可以显著降低前端研发成本,提高人工效率。当然,市面上也有产品尝试解决同样的问题,比如自下而上考虑跨端应用、专注于多端小程序统一上架的Taro,以及专注于小程序格式转换的等等,相比其他产品也具有独特的优势。
与上述产品不同的是,在产品架构设计之初,我们并没有打算将产品定义为单纯解决跨端(技术栈)应用的解决方案,我们从未局限于某一种开发框架。为了讨论清楚这个话题,我们先来聊聊有些抽象但又非常重要的部分:它由哪些部分组成?
它由以下三个部分组成:
接下来我们就来详细介绍一下这三个部分。
1. 端面
端侧主要由内嵌运行SDK和主机侧两部分组成。
SDK 需要处理的工作主要有三点,第一是确保小程序代码能在 App 中被解释渲染,成为用户可读、可见的前端页面。第二是确保相关业务请求在安全可控的环境下使用,还需要对网络请求端口、与用户绑定的 SSL 证书进行校验。此外还需要通过 SDK 加载相关的小程序插件。
为了保证小程序代码能在App内被解释渲染,我们也支持所有基于Taro或uni-app框架生成的小程序,无论开发者选择哪种框架开发小程序,最终的小程序都可以通过SDK在App内运行。
宿主端主要是指集成了 SDK 的宿主应用。无论我们想在手机端应用、电脑端应用,还是系统具备运行小程序的能力,都需要集成 SDK 才具备运行小程序的能力。目前支持在 iOS、、、国产操作系统(如同心 UOS)、IoT 设备(如车机系统)中运行小程序。对、、、IoT 系统的支持适配工作也在有序进行中。
2.云端
云端主要由应用商店、开发者中心(目前为小程序开放平台)组成。
我们不仅专注于让应用能够运行小程序,还提供了开发者中心,让开发者可以在应用商店中修改小程序的基本信息(如小程序名称、小程序类别、关键词和描述信息),方便用户在端侧搜索小程序。开发者还可以在云端下架、下架小程序,将小程序设置为测试预览版,并根据用户属性、身份信息设置不同的灰度发布方案,让终端用户在不同网络、环境场景下都能看到小程序信息的“千面”。
此外,对于企业内部已经拥有多个系统的大型企业客户,可以在云端管理后台设置用户和角色,并根据不同业务线或者不同身份对登录后台的用户设置相应的角色权限,或者按照企业内部多个信息系统之间统一的登录协议调试内部单点登录流程,这样可以更好地根据企业内部数字化需求提供所需的能力。
3.开发工具
除了端和云端,我们还有丰富的开发工具和生态系统供开发者使用。
比如,有用于编辑和调试小程序代码的IDE工具、用于在移动设备上预览实机效果的移动开发助手APP、用于获取更多小程序资源或相关插件的小程序应用市场等等。
此外,个人开发者可以免费部署社区版产品,包括小程序SDK和管理后台,管理后台只对可创建的小程序及相关应用数量有少量限制,大部分功能免费提供给开发者用户。以上所有资源均可在官网资源下载中心或小程序生态内获取。
4。结论
uni-app 是一个为解决跨端应用开发问题而设计的前端框架。如果前端开发者习惯使用 Vue.js 实现各类前端项目,那么可以基于 uni-app 轻松生成跨客户端、跨平台的小程序应用。小微项目定制商也可以利用 uni-app 快速满足客户需求,并在过程中降低自身的研发成本、提高研发效率。
它更加注重小程序本身,不仅提供跨客户端、跨系统的小程序运行沙箱,方便客户在自己的应用中运行现有的小程序,还拥有完善的开发者中心,帮助开发者管控小程序的整个生命周期。
但我们也有更长远的考虑:在企业数字化转型过程中,现有的Web应用、H5应用都要面临提升用户体验和业务性能的问题。在转向小程序提供服务的过程中,如何将已经上线流量平台的小程序迁移到自有APP上?如何让自有APP拥有运行小程序的底层容器引擎?
我们提供的小程序解决方案,不仅需要解决企业当前面临的“小程序迁徙”问题,更需要帮助企业考虑未来几年(甚至更长时间),而不需要根据新遇到的问题去寻找新的解决方案。
因此,除了具备小程序本身的运行能力之外,还具备对小程序全生命周期的管理能力,并为与企业内部现有信息系统的对接提供自动化、定制化支持的相关工具和资源,从而帮助企业更加可靠、可信地完成数字化转型过程。
本文最初发表于该博客。