寻觅完美的客户端开发方式

179 阅读3分钟

零、前言

上大学以前经常思考一个问题:我们用的电脑、手机上面的应用是怎么做出来的呢?但终归没有时间去研究。大学入学后发现这个问题还是无法解答,因为只能各种输出:“Hello,World”,仔细算了一下自己了解的编程语言(C++、Java、Python、JavaScript、C#、Dart、Go)大概也就试过这几种,但终究还是不能解答我心中的疑惑。

image.png

带着这个问题不断探索,也大概明白了这些个问题,无论是客户端还是Web开发都需要一个很重要的东西——框架,了解了一些传统客户端开发的技术之后,发现新的技术在B/S和C/S之间萌生发展。以前后端分离项目为例,浏览器是作为B(Browser)还是C(Client),说是B是因为本来就依托于浏览器,说是C是因为分离后不做数据操作只作为客户机;再以大前端时代新兴的Electron客户端开发为例,用的是chromium内核,通俗的讲也就是谷歌的浏览器内核,后端平台是Node.js,(Js语言本来就挺变态,只不过数据处理效率上较慢),这种开发方式也模糊的处于二者之间,可以把网页直接嵌入。

综上所述,人们总是在探索一种跨平台的解决方案,但终究没有一种完美的解决方案,各大平台纷纷打造自己的生态,其实这种就像一种战争,有了苹果手机再配上苹果产的平板和电脑,就能使多端之间方便交互,Swift在Objective-C基础上优化,作为苹果自研的专属语言同他的英文释义一样,在Mac和IOS上进行敏捷开发,同理,华为也是这样,未来的鸿蒙也估计会推出自己的语言。但是随着操作系统的发展,平台多导致开发者无法面对多端同时使用一套解决方案,小程序和uni-app的产生极大降低了原生APP的开发需求,Electron、Flutter以及最新的我现在还没记住名字的Tauri,在不同程度上解决了跨平台的问题,让一套代码多端复用成为现实,但终究会存在些许不足。

一、传统C/S开发

通病:有的太过丑陋,难以美化,部分可以借助UI框架

优点:便捷、简单、解决方案多、经验成熟

C++:Qt和MFC

C#:.Net(可以借助NanUI等框架)

Java:awt、swing

Python:Tkinter、PyQt、、、

Go:...

二、新晋开发方式

优点:美观、跨平台

缺点:占用内存较大,难以CV,有的问题你遇到了,发现根本找不到解决方案,刚起步,用Python写个爬虫,网上复制粘贴修改一下就可以,用其他语言要自研。

Js:Electron、Electron-vue(天地良心,Windows上面部署开发环境就像在南极吃烧烤,愣是不知道少什么,就是烤不熟,在Mac上部署开发环境就像在火山上烧烤,不用烤就熟了)

Rust:Tauri(开发环境部署也根据各个操作系统具体需要,Win上要Visual Studio部份依赖)

Dart:Flutter(文件路径一定不要有中文,Win上要安装Visual Studio部分依赖)、Dart+Go、Java、Swift、Kotlin(Dart前后端通吃的语言)