对于初创型企业,即使项目规模不大,但其总体的时间成本却仍是重要的考虑因素。作为一个小开发,近期就完整经历了一个初创小项目从0到1搭建、推向市场的过程。在这过程中也深深体会到即使产品开发只是一小部分,也需要同时间赛跑,推动项目高效进行。
由于项目的特殊性,最初的产品demo通过微信小程序的形式跑通了基本功能,然后就到了正式研发阶段。老板对产品的要求就是需要包含:微信小程序、H5、Android、ios、windows、macos并且尽可能多的覆盖其它平台。本系列文章先站在公司的的角度对产品技术选型进行分析,然后再根据我们项目实际开发经验进行汇总,供大家参考。
目前大前端技术也非常丰富,可以实现,一次开发,打包多个平台。团队针对几个不同技术方案里进行了讨论:有比较老牌的Cordova、Xamarin、NativeScript,也有近几年比较火:React Native、Flutter、FinClip、Election
Cordova
Cordova胜在架构简单,比如一个简单的Activity,上面搭载一个CordovaWebView Component,他是一个改造过的WebView,加装了一些Cordova API,让你借此和Native的部分交互。App基本上就是一个Mobile Web,多了一些跟Native交互的能力。
优点是好上手,写代码快。有丰富的插件去衔接Native平台、社区完善。使用Ionic可以一套代码在安卓端、iOS端、网站端、小程序端通吃。
Cordova(Ionic)缺点也明显,终究是个Web,性能体验太差了!
Xamarin
Xamarin是Cordova的老对手,Xamarin的产品简化了针对多种平台的应用开发,包括iOS和 Android。总体比Cordova复杂多了,大致上分成几个部分:Xamarin.Android、Xamarin.iOS、Xamarin.Mac(后来才出现的)以及Xamarin.Forms。
Xamarin.Mobile有很多优点。在这一框架内,开发 Android 和 iOS 应用可以不用转到 Eclipse 或者额外购买 Mac 并使用 Xcode,而继续在Visual Studio之中使用 C# 与 .NET Framework 进行。而且性能性能接近原生、内置功能丰富(数千个自定义UI控件)。 缺点:稍微延迟支持最新的平台更新、对开源库的访问受限、Xamarin生态系统不大、与第三方库和工具的兼容性问题等等
Flutter
Flutter是近两年风很大的一款开源、跨平台移动端开发框架,由 Google 开发。Flutter 使用 Dart 作为开发语言,这是一门简洁、强类型的编程语言。它允许使用同一个代码库构建高性能、漂亮的 iOS 和 Android 应用,Flutter还提供了两套视觉库,可以针对不同的平台有不同的展示效果。此外,通过自定义的 Flutter 引擎可以将其嵌入到其他平台。
Flutter优点非常多:开源免费;Dart语言简单易学;独立的Skia渲染引擎,高性能高一致性、丰富的组件支持、丰富的社区支持,在混合开发中,是最接近原生开发的框架。
团队没有选择Flutter 的主要原因是Flutter on desktop也还是beta版本。Windows PC和linux平台的兼容支持官方正在持续研发中。
FinClip
与上面Flutter、Cordova、Xamarin这些框架技术比起来 FinClip实在是一款轻便简洁的小工具,我们惊叹于它的灵活性!整体灵活又体积小巧(大概3M)。
FinClip是一套小程序容器技术,也可以说是小程序SDK Runtime/Engine,提供 Runtime 基于浏览器内核,采用动态语言(JS)和声明式 View 构建(XML),并且兼容互联网主流小程序技术,可采用 vue、react 基础上的 DSL 框架。
这种容器技术与上述的跨端技术不仅不冲突,还可以兼容。不管是通过Flutter、Reactive Native、uni 、Taro等开发出来的小程序都可以通过 FinClip运行。
小程序运行时方案的高性价比,主要体现在应用体验、应用框架支持以及宿主环境结合等方面。
应用体验方面,小程序技术是前端容器技术的一种应用,其组件及UI都有明确的规范,开发者不用考虑兼容性及类似H5开发时复杂工具及框架的选择。同时,由于组件及UI都是预设的,展示体验也会更佳。 应用框架支持方面,运行时方案不仅支持纯 wxml 微信小程序运行,还支持包括Flutter、Reactive Native、 uniapp等第三方框架集成的小程序。 宿主环境结合方面,小程序是基于App端实现的应用,其获取系统(App)的权限也会多于H5;目前小程序技术的发展已经趋于成熟,市面上小程序以运行时已经开始出现多智能终端设备的适配(基于Andriod系统的多终端屏幕适配)。
目前我们团队选择了FinClip,主要考虑到它的灵活性轻量较高,并且通过官方IDE里自带的“小程序转APP”功能将前期在微信上跑通的demo转成了APP应用上架到了应用市场。目前还在实现PC端的适配。该技术应用的情况,后续再给大家做分享。