在编写小程序或企业数字化转型时,通过轻应用平台与前端开发框架都能实现同样的功能。但二者有什么区别?各有什么优劣势?下面分别以FinClip和uni-app为例探讨这个问题。
uni-app 是为了解决跨端应用研发问题的前端框架
简单来说,uni-app 是一款为了解决跨端开发问题所设计的前端开发框架,开发者通过 uni-app 所编写出的一套代码,可以发布到 iOS,Android,H5 平台之中。
配合 uni-app 官方提供的 IDE 工具 HBuilderX,还可以直接通过第三方小程序开发工具(如微信开发者工具,百度开发者工具等)中的 HTTP 服务,将在 IDE 中编写的代码在第三方开发者工具中进行编译预览,打包成对应的小程序资源。
此外,uni-app 也为开发者提供了较丰富的生态资源,如 DCloud 官方提供了插件市场的功能,开发者可以自行根据业务选择,在自有应用或小程序中集成插件,也可以成为插件开发者,上传共享自研的插件资源。
但一些原生开发中存在的问题,uni-app 也仍然没有办法解决:
对性能的优化有限,适合做一些简单场景下的应用或小程序。 想实现复杂场景与业务下的应用还是得靠原生;
维护迁移成本较高,如 uni-app 只能使用官方的云端打包,部署,统计与广告联盟服务,使用第三方服务有较大限制(也能理解,毕竟 uni-app 使用无须付费);
而如果将话题转到 uniMPSDK(uni-app 提供的小程序 SDK),也存在一些体验不佳的问题:
- 必须要使用 uni-app 框架开发小程序才行,不支持运行纯 wxml 的微信小程序;
- 小程序依然采用了 Webview 渲染或者原生渲染(React Native/weex)的技术架构,性能有限;
- 集成 uniMPSDK 后,App 包的体积可能会增长 7-16Mb 左右;
目前仅支持在 iOS 或 Android 应用中集成 SDK,无法适配其他平台。
FinClip 是一款轻应用平台,也是企业数字化转型的连接器
与 uni-app 不同,FinClip 的定位并非一款跨端应用研发框架,而是一款轻应用(小程序属于轻应用的一个子类)技术平台,它是由这几部分所组成的:
一个能运行小程序的安全沙箱(也就是 FinClip SDK),通过嵌入式 SDK 的形态让移动端软件、PC 端软件与物联网设备软件在内的宿主环境集成;
一个应用商店(FinClip 管理后台)提供应用的发现(陈列、搜索与推荐)机制、上下架与灰度发布的管理后台;
一系列的开发与监控工具(如使用 FinClip IDE 完成代码编写,使用 FinClip App 完成小程序预览)。
由于 FinClip 更加关注小程序全生命周期的相关事情,因此不论是 iOS 应用,Android 应用,Flutter 应用,RN 应用,甚至是 Windows 应用程序都可以集成 FinClip SDK,并在其中运行不论是微信小程序,亦或是基于第三方框架设计的小程序。
而通过管理后台,我们还可以对小程序的描述信息(比如头像,标题),关联应用(与某个移动应用进行关联)与小程序版本进行管理,解决小程序热更新并满足运营需要。即使开发者不在应用商店中对 App 进行发版更新,我们仍然可以更新小程序资源,只要用户安装并打开了 App,我们就可以根据规则库的配置实现小程序“千人千面”的功能。
小结
自此,我们初步对比了两个产品的差别。虽然在首次了解产品时,可能会因为产品描述与推广差异混淆其中的相似与差异,但各位读者朋友应该感觉到,两个产品有着根本的不同。
uni-app 主要用于解决跨端应用开发问题,通过使用 Vue.js 开发所有前端应用的框架,保证开发者编写一套代码,就可以发布到多个 App 与小程序平台中。但无法保证应用的体验顺滑与性能加载问题;
uniMPSDK 作为小程序前端框架,仅支持使用 uni-app 开发框架开发的小程序,无法将已有的微信小程序迁移在自有应用中,也不支持在通过 uni-app 导出的 App 中嵌入小程序;
FinClip 是一套小程序生态,通过集成 FinClip 的 SDK 并在后台中进行操作,开发者可以轻而易举在自己的 APP 中提供打开小程序的相关能力。而用户通过 uni-app 导出的小程序,也能够在 FinClip 中进行编译运行。
根本区别是什么
我们在前文中对于 uni-app 与 FinClip 作出了初步对比,uni-app 是一款前端应用开发框架,而 FinClip 则是一款轻应用平台。作为一款前端开发框架,主要的目标就是通过对不同功能的封装尽可能降低开发者的开发成本,并且提供一套解决方案。
从这个角度来说,uni-app 确实解决了前端应用跨端研发所面临的问题,在一些展示型或小场景定制项目中,确实能够大幅度降低前端研发成本,提升人效。当然,市面上也存在试图解决同样问题的产品,如更加从底层考虑跨端应用的 Flutter,关注多端小程序统一上架的 Taro,关注小程序格式互相转换的 Antmove 等等,也都有着与其他产品对比所具备的独特优势。
与以上产品不同,在 FinClip 产品架构的设计之初,我们就不承想将产品定义为单纯解决跨端(技术栈)应用的解决方案,我们从未局限于一种开发框架之中,为了聊清楚这个话题,先让我们来聊聊有点抽象、但是非常重要的部分:FinClip 由哪几部分组成?
1.端侧
FinClip 的端侧主要由嵌入式运行 SDK 与宿主端两部分组成。
对于 FinClip SDK 主要有三部分工作需要处理,第一是为了保证小程序代码能够在 App 中完成解释与渲染运行,变成用户可读可见的前端页面,第二则需要保证相关的业务请求均在安全可控的环境中使用,还需要对于网络请求端口与用户绑定的 SSL 证书进行校验,此外还需要通过 SDK 加载相关的小程序插件。
宿主端主要是指代的集成 FinClip SDK 的宿主应用,不论我们想在移动应用中运行小程序,想在电脑应用中运行小程序,还是在系统层面天生就自带运行小程序的能力,都需要在集成 SDK 后才能具备运行小程序的能力。目前 FinClip 已经支持在 iOS、Android 、Windows、国产操作系统(如统信 UOS)、IoT 设备(如车载系统)中运行小程序了,对于 macOS,Linux,物联网系统的支持与适配工作也在有条不紊的进行中。
2.云侧
FinClip 的云侧主要由应用商店与开发者中心(目前为小程序开放平台)组成。
我们不仅关注让 App 具备运行小程序的能力,所提供的开发者中心也能够让开发者在应用商店中对小程序基础详情(如小程序名称,小程序分类,关键词与描述信息)进行修改,便于用户在端侧对小程序进行检索。开发者还可以在云侧中对小程序进行上下架操作,将小程序设置为体验版进行测试与预览,根据用户属性与身份信息设置不同的灰度发布计划,从而便于终端用户在不同的网络与环境场景中看到“千人千面”的小程序信息。
此外,对于企业内部已有多个系统的大型企业客户,还可以在云侧的管理后台中对用户与角色进行设置,根据不同业务线或不同身份为登录后台的用户设置对应的角色权限,或者根据企业内部多种信息系统之间的统一登录协议完善内部单点登录流程的调试。从而更好地根据企业内部数字化需要提供所需要的能力。
3.开发工具
在端侧与云侧之外,我们还有丰富的开发工具与生态供开发者进行使用。
如用来完成小程序代码编辑与调试的 IDE 工具,用来完成移动端真机效果预览的移动开发助手 FinClip App,用来获取更多小程序资源或相关插件的小程序应用市场等等。
此外,对于个人开发者用户,可以免费部署 FinClip 社区版产品,包括小程序 SDK 与管理后台,管理后台仅在可以创建的小程序与关联应用数量上做了少许限制。大部分功能均面向开发者用户免费提供。
以上这些资源都可以在 FinClip 官网中的资源下载中心,或小程序生态圈中获取到相关资源。
总结
uni-app 是一款为了解决跨端应用研发问题的前端框架。如果前端开发者习惯于使用 Vue.js 完成各类前端项目的实现,可以很方便地基于 uni-app 生成跨客户端与跨平台的小程序应用。小微型项目定制方案商,也可以使用 uni-app 快速完成客户方的需求,并在此过程中降低自有研发成本,提升研发效率。
FinClip 更加关注小程序本身,不仅提供了跨客户端,跨系统的小程序运行沙箱,便于客户在自有 App 中运行已有的小程序,还有着完善的开发者中心,可以帮助开发者对于小程序的全生命周期进行管理与控制。
除了小程序本身的运行能力以外,FinClip 还具备对小程序全生命周期进行管理的能力,对于与企业内部已有信息系统进行关联,也提供了完成自动化、定制化支持的相关工具与资源,从而能够更可靠,可信地帮助企业完成数字化转型这一过程。