iOS开发高手课
戴铭
前滴滴出行技术专家
立即订阅
11443 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 锚定一个点,然后在这个点上深耕
免费
基础篇 (20讲)
01 | 建立你自己的iOS开发知识体系
02 | App 启动速度怎么做优化与监控?
03 | Auto Layout 是怎么进行自动布局的,性能如何?
04 | 项目大了人员多了,架构怎么设计更合理?
05 | 链接器:符号是怎么绑定到地址上的?
06 | App 如何通过注入动态库的方式实现极速编译调试?
07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?
08 | 如何利用 Clang 为 App 提质?
09 | 无侵入的埋点方案如何实现?
10 | 包大小:如何从资源和代码层面实现全方位瘦身?
11 | 热点问题答疑(一):基础模块问题答疑
12 | iOS 崩溃千奇百怪,如何全面监控?
13 | 如何利用 RunLoop 原理去监控卡顿?
14 | 临近 OOM,如何获取详细内存分配信息,分析内存问题?
15 | 日志监控:怎样获取 App 中的全量日志?
16 | 性能监控:衡量 App 质量的那把尺
17 | 远超你想象的多线程的那些坑
18 | 怎么减少 App 电量消耗?
19 | 热点问题答疑(二):基础模块问题答疑
20 | iOS开发的最佳学习路径是什么?
应用开发篇 (12讲)
21 | 除了 Cocoa,iOS还可以用哪些 GUI 框架开发?
22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?
23 | 如何构造酷炫的物理效果和过场动画效果?
24 | A/B 测试:验证决策效果的利器
25 | 怎样构建底层的发布和订阅事件总线?
26 | 如何提高 JSON 解析的性能?
27 | 如何用 Flexbox 思路开发?跟自动布局比,Flexbox 好在哪?
28 | 怎么应对各种富文本表现需求?
29 | 如何在 iOS 中进行面向测试驱动开发和面向行为驱动开发?
30 | 如何制定一套适合自己团队的 iOS 编码规范?
31 | iOS 开发学习资料和书单推荐
32 | 热点问题答疑(三)
原理篇 (6讲)
33 | iOS 系统内核 XNU:App 如何加载?
34 | iOS 黑魔法 Runtime Method Swizzling 背后的原理
35 | libffi:动态调用和定义 C 函数
36 | iOS 是怎么管理内存的?
37 | 如何编写 Clang 插件?
38 | 热点问题答疑(四)
原生与前端共舞 (5讲)
39 | 打通前端与原生的桥梁:JavaScriptCore 能干哪些事情?
40 | React Native、Flutter 等,这些跨端方案怎么选?
41 | 原生布局转到前端布局,开发思路有哪些转变?
42 | iOS原生、大前端和Flutter分别是怎么渲染的?
43 | 剖析使 App 具有动态化和热更新能力的方案
用户故事 (1讲)
用户故事 | 我是如何学习这个专栏的?
结束语 (1讲)
结束语 | 慢几步,深几度
iOS开发高手课
登录|注册

40 | React Native、Flutter 等,这些跨端方案怎么选?

戴铭 2019-06-13
你好,我是戴铭。
为了一份代码能够运行在多个平台,从而节省开发和沟通成本,各公司都开始关注和使用跨端方案。目前,主流的跨端方案,主要分为两种:一种是,将 JavaScriptCore 引擎当作虚拟机的方案,代表框架是 React Native;另一种是,使用非 JavaScriptCore 虚拟机的方案,代表框架是 Flutter。
使用跨端方案进行开发,必然会替代原有平台的开发技术,所以我们在选择跨端方案时,不能只依赖于某几项指标,比如编程语言、性能、技术架构等,来判断是否适合自己团队和产品,更多的还要考虑开发效率、社区支持、构建发布、 DevOps、 CI 支持等工程化方面的指标。
所以说,我们在做出选择时,既要着眼于团队现状和所选方案生态,还要考虑技术未来的发展走向。
接下来,我就以 React Native 和 Flutter 为例,和你说明如何选择适合自己的跨端方案。

React Native 框架的优势

跨端方案的初衷是要解决多平台重复开发的问题,也就是说,使用跨端方案的话,多个平台的开发者可以使用相同的开发语言来开发适合不同系统的 App。
React Native 使用 JavaScript 语言来开发,Flutter 使用的是 Dart 语言。这两门编程语言,对 iOS 开发者来说都有一定的再学习成本,而使用何种编程语言,其实决定了团队未来的技术栈。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《iOS开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • 少林李达康
    个人认为跨平台开发始终是个真需求,伪实现。真需求说的是市场确实需要一个完美的兼容多平台的开发方式来解决人力成本和开发效率。伪实现说的是目前无论哪种方案,真正落地开发的话还是必须要掌握安卓和iOS的开发技能。之前我做过一个RN的项目就是,许多api都是iOS这边兼容,安卓不兼容,这就需要了解安卓开发再去做兼容处理,反之亦然。这样其实更降低了开发效率,而且也无形中给开发人员增加了技能要求,必须都熟悉安卓和iOS开发。而真正熟悉两套开发技能的人在市场上的薪资不见得就比一个安卓 + iOS的薪资低。
    所以我认为在谷歌和苹果没有给出官方跨平台解决方案之前,一切跨平台都是小打小闹,只能小试牛刀,不能真正解决问题。
    个人愚见,不喜勿喷。
    2019-06-13
    53
  • 2thousand19
    期待swift UI 跨安卓平台的那一天
    2019-06-13
    11
  • 鑫琦
    之ggtalk的有一期“向架构师进发”,Casa Taloyum也说过跨平台开发的问题,当时给出的答案和@少林李达康 说的一样“一旦需要做兼容处理时,还是会要求熟悉Android和iOS开发技术”, 这样成本还是会不小,所以从长远来看确实不能真正解决问题。但是我的觉得从快发速度的角度来说,跨平台技术既能达到Web开发的速度,又能在一定程度上保证性能,相对HTML混合开发还是有进步的。

    另外说一下Flutter我个人的影响 最近离职在找工作,刚想强化一下iOS基础知识,在复习时间突然发现Flutter越来越火了, 当明连iOS都没学的精通,Texture,SwiftUI还没怎么用过,就要开始转移阵地学其他技术了。 但是要现在不学Flutter,又要掉队了。 对我这种技术普通开发者, 还是蛮纠结的。

    另外,“向架构师进发”这一期,我记得Casa Taloyum还引用了戴铭老师的话, 不知道的可以去听一下
    2019-06-13
    9
  • 从GitHub上的swift语言库来看,swift已经从底层上支持Android了,Linux系统(服务器方向)也支持的比较多,windows 也有支持,再加上今年推出的swiftUI来看,底层和应用层分步演进,再加上苹果公司这几年对metal渲染层的深耕,支持跨平台感觉是有望的!我是打算扎根swift了!
    2019-07-09
    4
  • 胖娃瓜
    NS性能比PSV强的多,PSV应该和3DS对比...
    2019-06-14
    1
    4
  • Geek_f0b40f
    我们就正在是用Flutter进行开发,也遇到过各种问题,但是正如戴铭所说的那样,一切都要看用户和开发者怎么去选,不过从目前来看,Flutter的增量远远高于RN,建议深耕Swift的情况下,着手开发Flutter吧!并且Flutter已经支持嵌入式/桌面端/web端 等平台了,野心蛮大的..
    2019-06-13
    4
  • Kratos
    老是能讲下动态热更新方案吗

    作者回复: 后面就会讲

    2019-06-13
    3
  • 骠骑将军狩猎还
    Kotlin要变成弃子了么。
    2019-06-19
    2
  • 小美
    不管上层建筑如何变换,目前可以做的就是打好基本功,知其所以然,而不是想当然,与各位共勉。
    2019-06-13
    2
  • 张松超
    SwiftUI渲染机智和UIKit有差别吗?如果没有差别,就不可能有跨安卓的那一天吧?

    作者回复: 渲染是底层的。SwitUI 是接口层

    2019-06-22
    1
  • 张峰
    我赞同1楼的观点!
    2019-07-16
  • ptlCoder
    SwiftUI 来一波
    2019-07-16
  • bluce
    没说缺陷,哪些坑,对于不熟悉的人来说太有偏向性
    2019-07-02
  • bart
    flutter gallery示例项目在我的iPhone7上转场动画掉帧非常明显,目前真想说一句,想说爱你不容易。
    2019-06-17
    1
  • 李超
    跨平台方案最重要的点还是性能,性能更佳的flutter当然是首选,对于原本是native开发的人来说,rn与flutter的开发成本是相差不大的,从长远角度来看,这批人最可能选择flutter。对于原本是web开发的人来说,rn是首选,因为毫无语言切换上的开发成本,一切都是熟悉的味道~
    2019-06-13
  • Lattice立叔⊙︿⊙
    PSV应该和3ds比
    2019-06-13
收起评论
16
返回
顶部