哈喽,我是老刘还记得上研究生二年级的时候我们可以选择一次主修的编程语言,分别是Java和C#当时我选择了C#虽然也去旁听了Java,那是为了帮女同学写作业
研究生毕业那年也是打算找Windows开发的工作的没想到后来兜兜转转成了Android开发,写了这么多年Java其实我是想说,一直以来我对C#体系都有足够多的好感特别是Mono流行之后,我觉得C#差不多快统一各端开发了如果让我说一个后来选择Flutter的原因,我觉得是因为架构其实在客户端开发一段时间后,很多同学都开始思考甚至实践跨平台的问题只不过我属于比较贪心的那种既想要跨平台的便利和一致性,又不想在性能和兼容性上做出妥协所以直到Flutter出现后才选择它作为我们跨平台开发的框架让我们来对比一下MAUI和Flutter的架构,看看他们的差别MAUI的架构RN其实比较类似都是最终把绘制渲染交给了原生控件而C#开发的代码作为业务逻辑的中间层来看下面这个按钮的实现
MAUI的控件,最终在各个平台上会调用原生的系统控件由系统控件完成最后的展示和渲染
这种架构的好处是上层框架可以不用考虑各个平台的渲染问题但是也带来了以下两个问题:1、平台一致性、兼容性不够好这点其实很好理解既然UI绘制最终交给了各平台的原生控件那么如何保证一个上层控件的功能,在不同平台的原生控件上都有对应的实现?如果一个功能在某些平台上有某些平台上没有怎么办?而一旦在原生控件部分产生bug那么开发人员就必须要回到原生代码层面进行定位和解决这就进一步造成了碎片化和兼容性问题2、存在一定的性能损耗这个问题我举个例子进行说明比如我们要实现一个拖拽功能就是在屏幕上点住一个元素,然后拖拽到屏幕其它地方而且元素在屏幕的不同位置要显示不同的颜色那这个代码如果在上层框架部分实现就需要元素在屏幕上每移动一个像素都从原生传递一个移动事件给上层框架而这种大量的实时数据传输,会严重拖慢性能那么再来看看Flutter架构,为什么Flutter没有类似的问题?Flutter架构Flutter最大的特点就是自带绘制引擎也就是说Flutter抛弃了调用原生控件的思路转而通过集成一个绘制引擎把所有UI展示的工作自己实现了一遍换个说法,Flutter相当于把原生UI替换掉了这也就是为什么Flutter可以避免上面说的那些问题的原因来看原生、MAUI和Flutter的架构对比
所以在目前的这种架构体系下我更看好Flutter未来的发展当然,如果Flutter的开发语言能换成C#那就更理想了或者MAUI也集成一个渲染引擎也是很不错的方案好了对两个框架的理解就先聊到这里如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。可以作为Flutter学习的知识地图。覆盖90%开发场景的《Flutter开发手册》
#怎样自学前端# #程序员经验分享# #分享编程技巧# #前端核心# #编程技巧讨论# #如何自学IT# #程序员毕业了# #编程经验# #破除编程# #如何自学C++#