美文网首页selectoriOS:block
Flutter开发和iOS开发的区别(优缺点)

Flutter开发和iOS开发的区别(优缺点)

作者: iOS弗森科 | 来源:发表于2020-10-29 15:14 被阅读0次

    文章来源掘金作者:jun_19

    自己写flutter也有段时间了,这次来聊聊flutter开发App和原生iOS开发App各有什么优缺点.

    本人自己整理的一些面试进阶资料,iOS底层视频+BAT面试专题PDF+核心笔记等资料+2020年《大厂最新常问iOS面试题+答案》希望能够帮助到大家提升技术。

    不废话,直奔主题👇

    1. 编译运行

    • Flutter支持的Hot reload和Hot restart简直不要太赞,写UI界面的时候,一键看效果.
    • iOS每次写完都要重新Run一遍,遇到大项目...这效率差的不是一点半点
    image

    2. 编程模式不同

    • Flutter是声明式编程,也是现在的主流模式,构建UI的时候是从整体到部分,拿盖房子来比喻就是:先把房子的架构搭建起来,再往里面填东西.
    • iOS是命令式编程,构建UI的时候是从部分到整体,拿盖房子来比喻就是:一块砖一块砖的码,码完了,房子也就盖好了.
    • 拿下图举例👇
    image
    • flutter开发,拿到UI首先会想到用Column组件纵向包含,两个输入框是多子布局Row包含2个子widget,其他都是单子widget,直接排列下来,再调整调整间距即可.
    • iOS开发拿到UI会想屏幕上有多少个控件,通过绝对定位和相对定位一个控件一个控件的放.
    • 比较之下,我觉得iOS相对更加直观一些.两者的编写速度跟熟练度有关,在熟练度相同的情况下,flutter完成一个界面的时间是要比iOS短的,效率更高一些.

    3. 编码方式

    • Flutter编码类似于web,是嵌套式的,一层套一层.我写的过程中发现,即使再怎么封装widget,在遇到一些稍微复杂的页面时,还是会出现嵌套多层的尴尬,看起来很难受(图一)
    • iOS编码类名或者命名都很长,可读性很高,但是OC语法不亲民,太多语法具备的功能它没有,swift语言出来后好很多,写起来还算舒服(图二)


      image
    image.png

    4. 插件支持(第三方支持)

    • Flutter支持的插件数量不够多,毕竟出来的时间太短(2017年才出),很多成熟的好用的轮子都是官方提供的,比如dio.集成插件的方式很简单,在pub.dev网上找到后,写进pubspec.yaml文件后,pub get一下就OK了,很方便.
    • iOS支持的第三方很多,像几乎每个App必备的AFN,MJ都是开源作者写的.很多轮子都有现成的可以用.导入相比之下就麻烦很多,要下载cocoapods,一系列的安装,不够简洁.

    5. SDK集成

    • flutter集成一些官方的SDK是比较麻烦的,比如微信登录,它是不能直接集成的.需要通过三方库桥接两端来集成微信SDK,文档也不够全
    • iOS集成一些官方SDK就很简单了,看着文档一步步来,初级开发都能搞定的事情.
    • 这个没太多可比性,因为毕竟flutter要顾及两端,难度和复杂度一定要高于iOS的.

    6. 对于定制化需求的实现难度

    • 开发中我们经常会遇到一些定制化的需求,这些需求是不能直接使用现有的三方或者现有的控件(组件)来实现的.这种时候就只能自己写轮子.
    • 如果把一个App所有的功能点集合比作一辆汽车.iOS的一些基础控件UIButton,UILabel等就像是汽车的一个完整的车轮或者一个车门.封装程度更高,功能更多,但是不容易改.flutter的widget就像是一个完整车轮的一个轮圈,一个轮胎.更小,更容易被修改.就好比iOS里的UILabel组件可以设置宽高,多行,单行展示,圆角属性;而flutter里的Text宽高设置不了,圆角属性还需要借助Container或者其他的Widget来辅助实现.
    • flutter面对定制化需求,更容易魔改系统自带widget的一些属性.因为每个widget功能都不多.修改起来难度不大.
    • iOS,OC代码是闭源的,没法直接修改系统控件的属性,即使能用黑魔法runtime修改,也有点捉襟见肘,面对一些定制化需求时,初中级开发会显得有些吃力.

    7. 文件的导入(图片和头文件)

    • Flutter中导入本地图片需要填写图片路径,在使用的时候也要把路径写上,比较麻烦(下图一)但是flutter自带Icon库包含了很多实用的小图标,省了2/3的切图,很赞.
    • iOS中导入本地图片,直接拖进Asset文件夹,使用的时候直接写图片名称就行,很方便(下图二)但是没有Icon库,几乎所有切图都要导入.
    image image
    • Flutter目前为止,我觉得最差劲的一点,就是每个dart文件用到的头文件,都需要导入一遍!!!官方没有提供任何的便捷方法,三方也没有!!!太不方便了 下面截图体会.下面两个不同的文件都需要用到app_fit.dart文件,就需要在这两个dart文件中分别导入.
    • iOS关于头文件导入就好很多,有个全局的pch文件,配置好路径,全局使用,很方便.
    image image

    8. 文件夹命名

    • Flutter中,我在学习使用的过程中,文件夹名称都是用英文命名的,用中文会出现一些未知错误.
    • iOS中的文件夹命名是完美支持中文命名的

    9. Debug调试

    • Flutter开发工具是VSCode和Android Stadio,这两个debug断点调试的时候,我用起来不是那么友好方便.感觉一般,个人开发过程中,封装了一个hylog来打印所在行来调试问题.
    • iOS的开发工具是Xcode,断点调试很方便,一打断点,自动捕捉,不用调整模式.

    本人自己整理的一些面试进阶资料,iOS底层视频+BAT面试专题PDF+核心笔记等资料+2020年《大厂最新常问iOS面试题+答案》希望能够帮助到大家提升技术。

    面试资料分享:资料内容包括逆向安防、算法、架构设计、Swift、多线程,网络进阶,还有底层、音视频、Flutter等等

    相关文章

      网友评论

        本文标题:Flutter开发和iOS开发的区别(优缺点)

        本文链接:https://www.haomeiwen.com/subject/kagkvktx.html