小项目应该如何进行跨平台方案选型

news2024/11/25 6:54:23

作为一个小开发,近期完整的经历了,一个初创项目从搭建到推向市场的过程。实际上在整个过程中,开发只占很小的一个板块,尤其是对于我司这种初创型企业,人少钱少,每一分都得花到刀刃上,因此产品开发的过程要足够快,成本也要足够低!

由于我们项目的特殊性,最初的产品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端的适配。该技术应用的情况,后续再给大家做分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新零售行业如何玩转线上服务

如今,随着市场的千变万化,企业的商业模式正在不断经历革新。如线上企业不再单纯走电商路线,纷纷进军线下卖场,而传统门店也在寻找线上突围的机会,通过与电商平台合作,开启线上专卖店。线上线下相结合的新零…

WebDAV之葫芦儿·派盘+静读天下

静读天下 支持webdav方式连接葫芦儿派盘。 如今,很多人都喜欢在手机上进行阅读,所以想要获得更好的阅读体验,一款实用的电子书就显得尤为重要了,因此,静读天下这款纯正的本地电子书阅读软件您值得拥有,而且还支持本地电子书备份到葫芦儿派盘。 静读天下是一款备受千万…

实例方法(instance method)、类方法、构造方法(三)

实例方法(没有static)的概念 对象被称为实例。实例相关的有:实例变量、实例方法。实例变量是对象变量。实例方法是对象方法。实例方法没有static。(对象方法,对象级别的方法) 实例方法的调用需要先new一个…

详解设计模式:桥接模式

桥接模式(Bridge Pattern)也称为桥梁模式、接口模式或者柄体模式,有点像适配器模式,也是 GoF 的 23 种设计模式中的一种结构型设计模式。 桥接模式 是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模…

【算法基础】双指针

一、最长连续不重复子序列 给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。 输出格式 …

azkaban表project_flows数据分析

project_flows表中数据是怎么存入进去的呢,其中有个JSON字符串是乱码,怎么设置的呢?搜索插入语句地方如下: 查看压缩类型,2为Gzip压缩 public enum EncodingType {PLAIN(1), GZIP(2); 查看flow.toObject方法,其实返回的是一个MAP,定义如下: 查看convertJsonToBytes方…

【毕业设计】20-基于单片机的指纹识别系统设计(原理图工程+源代码工程+实物操作图+答辩论文+答辩PPT)

typora-root-url: ./ 【毕业设计】20-基于单片机的指纹识别系统设计(原理图工程源代码工程实物操作图答辩论文答辩PPT) 文章目录typora-root-url: ./【毕业设计】20-基于单片机的指纹识别系统设计(原理图工程源代码工程实物操作图答辩论文答…

anaconda ( jupyter notebook ) 虚拟环境安装 lazypredict

安装lazypredict 点击 Anaconda Prompt 1.创建虚拟环境 conda create -n py3.9 python3.92.激活虚拟环境 conda activate py3.93.安装lazypredict pip3 install lazypredict0.2.7 numpy pandas tqdm scikit-learn xgboost lightgbm4.安装ipykernel (第一次导入…

SpringBoot3.0正式发布,我来尝尝鲜

GraalVM 版本:graalvm-ce-java17-22.3.0 SpringBoot3.0 中最重要的特性就是对 GraalVM 的支持,从而达到更快的启动速度,有两种使用方式。 利用 GraalVM 构建可执行文件 因为需要利用 GraalVM 来打包可执行文件,所以需要你的机器上…

bestphp‘s revenge/ 安洵杯Babyphp(phpsession题目)

目录 [LCTF]bestphp‘s revenge 一.SoapClient 二.CRLF Injection漏洞 简单来说就是,“回车换行”(\r\n)的简称。 三、call_user_func 四、PHPsession反序列化 安洵杯Babyphp 第一步 第二步 第三步 最后 [LCTF]bestphp‘s revenge 一.SoapCl…

基于docker创建mysql容器

基础环境 Server: Docker Engine - CommunityEngine:Version: 20.10.9选择镜像 好用、可靠 不好用:DOCKER OFFICIAL IMAGE mysql 好用: VERIFIED PUBLISHER bitnami/mysql 部署容器 创建桥接网络 docker network create app-tier --drive…

java 把a.txt文件中的内容复制到当前项目目录下的b.txt文件中,2种方式比较复制效率 毫秒比较

java 把a.txt文件中的内容复制到当前项目目录下的b.txt文件中,2种方式比较复制效率 毫秒比较 package xxx;import java.io.*; public class JavaApplication1 {public static void main(String[] args) throws IOException {long start System.currentTimeMillis(…

[附源码]Python计算机毕业设计Django第三方游戏零售平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

手把手教你写一个Vue3组件库但是乞丐版

好久没写文章了,最近在研究一些组件库的实现方法,分享一下。在这我这篇文章之前其实已经有一篇文章讲了Vue如何打包组件库了(最底部),但是这篇文章一是没有源码二是Vue3和Vue2的组件库写法有点不一样,关于这…

数据挖掘-理论与算法 公开课笔记

1.1.1.1 整装待发 近年来数据存储和数据处理的能力都产生了飞跃,为数据挖掘奠定了基础。虽然数据量大,但是真正有用的信息少 2.1.2.1 学而不思则罔 是多学科(机器学习、人工智能、模式识别、统计学)的交叉领域如何学习数据挖掘&…

【分布式能源的选址与定容】基于非支配排序多目标粒子群优化算法求解分布式能源的选址与定容附Matlab代码

​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法…

【HDU No. 1166】 敌兵布阵

【HDU No. 1166】 敌兵布阵 杭电 OJ 题目地址 【题意】 A国在海岸线沿直线布置了N 个工兵营地。C国通过先进的监测手段对A国每个工兵营地的人数都掌握得一清二楚。每个工兵营地的人数都可能发生变动,可能增加或减少若干人手。 【输入输出】 输入: 第…

知识整理:1802907-99-8,Desthiobiotin-PEG4-Alkyne生物素类似物

(本品应密封避光,储存于阴凉,干燥,通风处,取用一定要干燥,避免频繁的溶解和冻干) ●中文名:脱硫生物素-四聚乙二醇-炔基 ●英文:Desthiobiotin-PEG4-Alkyne ●外观以及性…

浮点数渐进下溢

文章目录浮点数渐进下溢浮点数渐进下溢 当IEEE754浮点数的运算结果或转化结果中,存在阶码全0的情况时,在IEEE754标准的描述中说,若此时尾数不全为0,则表示次正规数,即次数浮点数的真值其实应该成为: (−1)…

YUV数据格式

1. YUV的原理 YUV 的原理是把亮度(Luma)与色度(Chroma)分离。 “Y”表示亮度,也就是灰度值。 “U”表示蓝色通道与亮度的差值。 “V”表示红色通道与亮度的差值。 其中 Y 信号分量除了表示亮度信号外,还含…