终端应用开发沉思录

前言

以下所有分析皆是从我的视角出发,探讨下我现行局势下觉得最有可能的实现且有未来发展前景的技术方案。由于本人没有啥开发经验,所以多是纸上谈兵,仅仅记录和分享下我个人想法。

移动App的开发模式:

在技术选型上,其实好久没这么犹豫过了,最近几天学到React Native,但迟迟没有全身心投入,就是在疑虑其和市面上的其他技术相比是否值得学习。
目前移动应用开发有以下三条主要道路(原生 H5 混合)外加一个国内特色的小程序

开发模式典型应用场景优点缺点代表技术
原生开发高性能需求、UI/UX要求严格的场景性能高,完整API支持,用户体验佳开发和维护成本高,无法跨平台Android SDK, iOS SDK, UWP
H5开发跨平台、快速迭代、内容动态更新的场景一次开发,多平台适配,更新简单性能受限,功能受限HTML, CSS, JavaScript, JSCore, V8
混合开发跨平台、调用原生功能、性能要求较高的场景跨平台,调用原生功能,维护成本低性能较原生略差,复杂功能开发受限React Native, Weex, uni-app, taro,Flutter

我的想法

移动端

局势分析

移动跨端多是讨论跨android和ios两大移动系统
早已经给自己作掉的Windows和就没啥起色过的阿里云OS都不在讨论范围,但最近遥遥领先的鸿蒙系统确实值得重视,可以预见的是HarmonyOS将随着国力进步等各种因素,将逐渐成为真正的第三大系统,所以在国内搞移动端应用开发不得不重视。
因此我在技术选型的时候会综合考虑这三个系统。
这是我从开发者视角去看的问题,HMOS的独立意味着又有新的技术需要花费精力去学习,看似岗位会增加,但是如果作为一个企业出发,就是意味着要投入更多的人力成本去开发维护,就算不是简单的乘法1.5倍,那也绝对是徒增的资金投入,(因为HMOS的使用并不会带来用户的增加,而是将原来使用华为手机的安卓用户变成了鸿蒙用户),给本就不乐观的移动应用开发岗位狠狠来了个暴击。其实这也在某种程度上意味着原生开发在小厂是不现实的,仅仅有可能是部分中厂和大厂有财力去招揽原生应用开发人员。所有我认为原生应用的岗位在未来是会变少的,而跨端应用的岗位会增加。
接下来我会逐个分析各个路线优劣。

原生开发

优点和缺点都是写原生带来的,原生开发的应用能优化到极致,性能最优异,能实现的功能也是最底层的;缺点就是需要为每个系统都单独开发维护,需要投入相较于其他路线更多的人力成本,且原生开发和其他俩条偏前端技术栈的道路不同,短期内是无法让前端开发者直接干原生开发的,也就是企业若要原生开发只能现招。
对开发者个人来说,前端开发者要进行原生开发偏离以往的技术栈

  • 安卓要在Android Studio上开发,使用Kotlin编程语言,学习OOP思想,使用Jetpack库,学会设计模式,理解android系统等等
  • 苹果则要使用MacOS系统,在Xcode上开发,使用Swift语言,学习OOP思想,用SwiftUI,学习ios系统等等
  • 鸿蒙我没怎么接触过,华为为鸿蒙开发也单独搞了套开发语言和IDE等开发者工具,也是要单独学习。
    基本上走这条路和曾经的技术栈是截然不同的,我个人的感觉也是如此,每一个都是几乎全新的东西,没太多可以通过前端经验直接移用的地方。
    我个人认为这算是一条新的技术路线了,对绝大数前端程序员来说转型的阵痛过于凶猛了。

难听的已经说了,但对我个人来说若真要进行移动应用开发,原生这一套是不得不学的

  • 一是移动端的交互逻辑与Web、桌面不同:屏幕大小不一样,点击逻辑不一样。其实这一点就值得开发者去思考,毕竟能用和好用是有很大差距的。学习这一套其实也能反哺Web开发,写响应式时也能有大致思路。
  • 二是原生铁定的有市场的,就算跨端在厉害,只要对性能有追求,无论那跨端技术吹的多牛,都是有差距的。
  • 三是原生开发的那一套是由相应系统的母公司直接维护,能保证和系统更新同步,系统的新特性,原生开发能第一时间用上,保证有完整的API支持。
  • 四是应用开发完打包上架走正常流程就好,没那么多幺蛾子。

H5开发

我不看好,性能最低下,功能最受限,只能搞一些简单的APP。

混合开发

这就是我最近在研究的,最让我纠结的是目前国内的状况,GFW、各家手机系统魔改、巨头搞分割各占山头,这些都无疑增加了在国内搞跨端的难度。
先看技术栈吧,大致就是按React和Vue分,毕竟都是从前端的Web想要干移动端的事情。
国外的那一套React Native + expo,似乎在国内走不通。Weex和uniapp是基于Vue,我没学过Vue,被我pass了。剩下的只有taro了,还没开始动手学,该框架是京东维护着的,短期内是死不了,但绝对到不了好用级别。
Flutter是另外一个特色的路线,也是实现跨端,但是要使用Dart语言,渲染方法也比较特殊,本来由于我看是Google维护的挺有希望的,但最近传闻被Flutter团队被砍到50人,不知道Flutter是否能长久,我还是选择先观望个把月再决定。
大概的讲一下

逻辑层渲染层语言类型代表技术
js引擎webview弱类型uniapp
js引擎原生渲染弱类型React Native、Weex
dart引擎flutter渲染引擎强类型Flutter

App跨平台框架VS原生开发深度评测之2023版App跨平台框架历史悠久,从cordova、react native、f - 掘金具体的技术不同可以看下这篇文章,看一下是什么技术就行,这篇文章纯纯uniapp的广告文,这也是我特别反感uniapp的原因,本事没多大但吹的牛x轰轰😓。
我这么分析下来,估计也能明白我的迷惑了吧,混合开发目前还是真混乱,没有一款一锤定音的技术能作为保障,都有太多的不确定性了。
综合考量下,我选择还是趟一下RN这汤浑水,之后学的差不了的时候估计会再出一篇心得体会,害。开发的话会考虑使用taro,但是就目前我不会去学,毕竟还是处于成长探索期,迫不得已采用的开发框架等我工作再受这苦吧。学完RN之后到底是深入移动开发去学原生还是转向全栈去学Node.js等到时候再抉择吧。

桌面端

我也写不明白c系语言,直接无脑Electron得了,嫌弃包大就用下Tauri。
Tauri也在布局移动端,但我不怎么看好,毕竟移动端和桌面端还是不一样的,不单单是代码复用的问题。

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

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

相关文章

商场试衣间惊现隐藏摄像头:小澄检测仪助力博主影子揭露

在信息时代,隐私安全如同一座需要时刻守护的堡垒。然而,近期公共场所出现的针孔摄像头事件,让这座堡垒遭受了严峻冲击。科普博主影子不会说谎近日发布视频,再度曝光隐藏在商场服装店试衣间的针孔摄像头,引发公众关注。…

数据分析那些事儿——关于A/B实验

数据分析那些事儿——A/B实验及实验中的辛普森悖论?如何避免 1、A/B实验分组方法2、注意事项3、A/B实验中的辛普森悖论?如何避免? A/B实验是一种用于比较A和B(可以是两个版本的网页、应用程序或其他产品)以确定哪个版本…

【MATLAB仿真】基于matlab的圆形阵列的波束形成进行仿真

摘要 本文研究了基于圆形阵列的波束形成技术,并利用MATLAB对其进行仿真分析。圆形阵列波束形成在现代无线通信、雷达和声学等领域具有广泛的应用,能够有效提高信号的方向性和抗干扰能力。本文通过改变阵列半径及入射角,对波束图进行了仿真分…

遗传算法与深度学习实战(23)——利用遗传算法优化深度学习模型

遗传算法与深度学习实战(23)——利用遗传算法优化深度学习模型 0. 前言1. 神经进化2. 使用遗传算法作为深度学习优化器小结系列链接 0. 前言 神经进化涵盖了所有用于改进深度学习的进化算法。更具体地说,神经进化用来定义应用于深度学习的特…

AG32 FPGA部分简单开发

环境 Quartus 13.0(Quartus 不能使用Lite 版本,需要使用Full 版本)AGM SDKSupra(快捷方式在SDK目录下,具体路径为AgRV_pio\packages\tool-agrv_logic\bin) FPGA编程 在AG32芯片中,拥有异构双…

github使用基础

要通过终端绑定GitHub账号并进行文件传输,你需要使用Git和SSH密钥来实现安全连接和操作。以下是一个基本流程: 设置GitHub和SSH 检查Git安装 通过终端输入以下命令查看是否安装Git: bash 复制代码 git --version配置Git用户名和邮箱 bash …

hive修改表名、修改列名、修改分区

文章目录 一、修改表二、修改列三、修改分区 官网地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-AlteringandDroppingTables 一、修改表 1、重命名表名 ALTER TABLE table_name RENAME TO new_table_name示例: 将user表…

告别复杂协作:Adobe XD的简化替代方案

Adobe XD是一款集成UI/UX设计和原型创建功能的设计平台。它允许用户进行网页、移动应用的设计,以及原型的绘制,并且能够将静态设计转化为动态的交互原型。尽管Adobe XD提供了这些功能,但它依赖于第三方插件,且插件库有限&#xff…

React Hooks在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

ASR+LLM+TTS在新能源汽车中的实战

ASRLLMTTS在新能源汽车中的实战解决方案,已经在路面上大规模应用,下面简单介绍一下: 实战案例 以下是一些国内新能源车机里 ASRLLMTTS 的案例: 蔚来: 蔚来的车机系统在智能语音交互方面有较为出色的应用。其 ASR 技…

Scala图书馆创建图书信息

图书馆书籍管理系统相关的练习。内容要求: 1.创建一个可变 Set,用于存储图书馆中的书籍信息(假设书籍信息用字符串表示,如 “Java 编程思想”“Scala 实战” 等),初始化为包含几本你喜欢的书籍。 2.添加两本…

前后端、网关、协议方面补充

这里写目录标题 前后端接口文档简介前后端视角对于前端对于后端代码注册路由路由处理函数 关于httpGET/POST底层网络关于前端的获取 路由器网关路由器的IP简介公网IP(WAN IP)私网IP(LAN IP)无线网络IP(WIFI IP)查询路由器私网IP路由器公网IP LAN口与WIFI简介基本原理 手动配置电…

Tomcat与Nginx之全面比较

概况 Apache Tomcat Apache Tomcat,通常简称为Tomcat,是一个开源的Web应用服务器,它主要用于运行Java Web应用程序。Tomcat实现了Java Servlet和JavaServer Pages(JSP)技术,这些是Java EE规范的一部分。To…

网络基础协议理论(TCP协议)

TCP协议(传输控制协议)是网络中一种面向连接的、可靠的、基于字节流的传输层通信协议。以下是对TCP协议的详细简述: 1、TCP协议的基本概念 TCP协议在通信双方建立连接后才能进行数据传输,确保数据的可靠性和顺序性。它广泛应用于…

C语言学习笔记----基础篇

1.数据类型-变量-常量 数据类型 数据类型 │ ├── 基本数据类型 │ ├── 整数类型 │ │ ├── int │ │ ├── unsigned int │ │ ├── short │ │ ├── unsigned short │ │ ├── long │ │ ├── unsigned long │ │ ├…

YOLOv9改进 ,YOLOv9改进损失函数采用SlideLoss来处理样本不平衡问题

摘要 作者提出了一种基于 YOLOv5 改进的实时人脸检测模型,称为YOLO-FaceV2。设计了一个感受野增强模块(RFE)来提升小尺度人脸的感受野,并引入了 NWD 损失,以弥补 IoU 在小目标位置偏差上的敏感性。针对人脸遮挡问题&a…

设计模式——策略模式(c++)

策略模式(Strategy Pattern)在 C 中的实现 1. 策略模式定义 策略模式定义了一系列算法(策略类),将每个算法封装起来,使它们可以相互替换,达到灵活使用不同策略的目的。在策略模式中&#xff0…

strcpy放字符串,strcat接着放字符串

#include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_ARGS 10 #define USAGE_LEN 256int main(int argc, char *argv[]) {char usage[USAGE_LEN];char *args[MAX_ARGS];int i, arg_count 0;// 构建使用说明字符串strcpy(usage, "U…

uni-app中使用 unicloud 云开发平台③

文章目录 六、hbuilderX 中使用 unicloud 云开发平台文档传统业务开发流程什么是 unicloudunicloud 优点开发流程uncloud 构成云数据库云存储及 CDN创建云函数工程七、unicloud api 操作云函数调用云函数实现云数据库基本增删改查1. 获取数据库引用云存储操作六、hbuilderX 中使…

用 Python 从零开始创建神经网络(五):损失函数(Loss Functions)计算网络误差

用损失函数&#xff08;Loss Functions&#xff09;计算网络误差 引言1. 分类交叉熵损失&#xff08;Categorical Cross-Entropy Loss&#xff09;2. 分类交叉熵损失类&#xff08;The Categorical Cross-Entropy Loss Class&#xff09;展示到目前为止的所有代码3. 准确率计算…