Flutter核心技术与实战
陈航
美团点评高级技术专家
立即订阅
6150 人已学习
课程目录
已完结 47 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 为什么每一位大前端从业者都应该学习Flutter?
免费
01 | 预习篇 · 从0开始搭建Flutter工程环境
02 | 预习篇 · Dart语言概览
Flutter开发起步 (3讲)
03 | 深入理解跨平台方案的历史发展逻辑
04 | Flutter区别于其他方案的关键技术是什么?
05 | 从标准模板入手,体会Flutter代码是如何运行在原生系统上的
Dart语言基础 (3讲)
06 | 基础语法与类型变量:Dart是如何表示信息的?
07 | 函数、类与运算符:Dart是如何处理信息的?
08 | 综合案例:掌握Dart核心特性
Flutter基础 (13讲)
09 | Widget,构建Flutter界面的基石
10 | Widget中的State到底是什么?
11 | 提到生命周期,我们是在说什么?
12 | 经典控件(一):文本、图片和按钮在Flutter中怎么用?
13 | 经典控件(二):UITableView/ListView在Flutter中是什么?
14 | 经典布局:如何定义子控件在父容器中排版的位置?
15 | 组合与自绘,我该选用何种方式自定义Widget?
16 | 从夜间模式说起,如何定制不同风格的App主题?
17 | 依赖管理(一):图片、配置和字体在Flutter中怎么用?
18 | 依赖管理(二):第三方组件库在Flutter中要如何管理?
19 | 用户交互事件该如何响应?
20 | 关于跨组件传递数据,你只需要记住这三招
21 | 路由与导航,Flutter是这样实现页面切换的
Flutter进阶 (17讲)
22 | 如何构造炫酷的动画效果?
23 | 单线程模型怎么保证UI运行流畅?
24 | HTTP网络编程与JSON解析
25 | 本地存储与数据库的使用和优化
26 | 如何在Dart层兼容Android/iOS平台特定实现?(一)
27 | 如何在Dart层兼容Android/iOS平台特定实现?(二)
28 | 如何在原生应用中混编Flutter工程?
29 | 混合开发,该用何种方案管理导航栈?
30 | 为什么需要做状态管理,怎么做?
31 | 如何实现原生推送能力?
32 | 适配国际化,除了多语言我们还需要注意什么?
33 | 如何适配不同分辨率的手机屏幕?
34 | 如何理解Flutter的编译模式?
35 | Hot Reload是怎么做到的?
36 | 如何通过工具链优化开发调试效率?
37 | 如何检测并优化Flutter App的整体性能表现?
38 | 如何通过自动化测试提高交付质量?
Flutter综合应用 (6讲)
39 | 线上出现问题,该如何做好异常捕获与信息采集?
40 | 衡量Flutter App线上质量,我们需要关注这三个指标
41 | 组件化和平台化,该如何组织合理稳定的Flutter工程结构?
42 | 如何构建高效的Flutter App打包发布环境?
43 | 如何构建自己的Flutter混合开发框架(一)?
44 | 如何构建自己的Flutter混合开发框架(二)?
结束语 (1讲)
结束语 | 勿畏难,勿轻略
特别放送 (1讲)
特别放送 | 温故而知新,与你说说专栏的那些思考题
Flutter核心技术与实战
登录|注册

03 | 深入理解跨平台方案的历史发展逻辑

陈航 2019-07-04
你好,我是陈航。
今天,我会从跨平台开发方案的诞生背景、原理和发展历史的角度,和你聊聊这些常见的开发方案,以及针对不同的场景我们应该如何选择对应的方案。

浅述跨平台开发的背景

我们当下所处的移动互联网时代,以它独有的变革方式,带给我们快捷、经济、安全和方便,改变着生活的方方面面。而对于企业来说,移动应用已然成为各类手机终端上一张必备的产品名片。
在移动互联网的浪潮下,我们开发的应用要想取胜,开发效率和使用体验可以说是同等重要。但是,使用原生的方式来开发 App,就要求我们必须针对 iOS 和 Android 这两个平台分别开发,这对于中小型团队来说就是隐患和额外的负担。
因为这样的话,我们不仅需要在不同的项目间尝试用不同的语言去实现同样的功能,还要承担由此带来的维护任务。如果还要继续向其他平台(比如 Web、Mac 或 Windows)拓展的话,我们需要付出的成本和时间将成倍增长。而这,显然是难以接受的。于是,跨平台开发的概念顺势走进了我们的视野。
所以从本质上讲,跨平台开发是为了增加业务代码的复用率,减少因为要适配多个平台带来的工作量,从而降低开发成本。在提高业务专注度的同时,能够为用户提供一致的用户体验。用一个词来概括这些好处的话,就是“多快好省”。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Flutter核心技术与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(43)

  • VHJM
    方案对比表格中的页面级支持和区块级支持是什么意思啊?

    作者回复: 页面级和区块级支持表示,跨平台框架中的View和原生的View混用程度。比如Webview我们通常是打开一个新的页面,而RN和Flutter不仅可以支持打开新的页面,还可以在原生的页面中内嵌区块

    2019-07-08
    7
  • 月光疾风
    我就不喜欢web那一套,web有今天的生态是历史进程导致的,很多东西用web开发完全就是强扭的瓜的感觉,但是架不住他们人多非要这样搞。但是在移动平台web一直不算成功,甚至都不如桌面成功,桌面还有VScode这样的应用,但是桌面大多数生产力软件还不是web那一套搞的。

    作者回复: Web最大的优势是标准化和生态。我认为判断一个技术是否能成为未来大前端主流技术发展的趋势,主要看这个技术是否能减少对底层宿主环境的依赖,隔离各终端系统差异,能否从原理和运行机制及生态有领先同类产品的表现,向开发者提供统一而标准化的能力。

    2019-07-04
    1
    4
  • we
    老师,小白问句,动态化是指什么?

    作者回复: 指代码逻辑放到云端,以下发的方式更新应用程序原本功能的方式。可以理解成玩手机游戏下载新的关卡一样

    2019-07-04
    1
    4
  • zhaosc
    再不拥抱就晚啦。
    我能说以上的跨平台框架都经历过吗?😂

    作者回复: 厉害了

    2019-07-04
    3
  • Geek_45a2f1
    老师,咱们到后面是视频讲解,还是一直都是这样的图文讲解

    作者回复: 图文和音频是没问题的哈。如果有讲不清楚的地方我们会用视频。

    2019-07-04
    1
    3
  • 衣知世 与 计知白
    老师,Flutter在播放视频时是如何操作呢?比如android和ios两端都有,这样是不是还得要求开发人员分别会两个平台的原生需要呢?

    作者回复: 需要使用插件支持

    2019-10-14
    1
  • 陌上花开1
    用过Xamarin,感觉也不错
    2019-07-12
    1
  • 咖啡凉了
    大家觉得如果Flutter 流行起来,Apple 会对其进行限制吗?

    作者回复: 从内部看,Flutter的实现原理和运行机制是满足Apple政策的;从外部看,除了禁止热修复这种动态修改App功能的方案之外,苹果还没有限制过任何一个跨平台框架。
    Google和Apple都是顶尖的科技巨头,相信他们之间会对跨平台技术的边界有过沟通,也相信Apple的胸怀。

    2019-07-08
    1
  • 、、cryAllen
    搭建过一个Hybrid开发框架,引擎以cordova为主,看中的就是它的成熟解决方案和丰富的插件生态社区,之前也对比过RN/weex,那时候坑比较多,还是有待观察就没入手了。现在转而关注Flutter

    作者回复: Welcome to Flutter

    2019-07-05
    1
  • 大雄
    陈老师,想请教下。例如D3.js/three.js都是由js和web技术实现的,能够在flutter构建的app中使用这些库么?

    作者回复: 不能

    2019-11-22
  • 信仰年轻
    老师,flutter现在android支持热修复了,图表没有修改

    作者回复: 首先,出于应用市场合规、性能和安全考虑,Flutter官方不会支持热修复能力;
    其次目前市面上的热修复方案指的是产物替换(vm_snapshot_data、vm_snapshot_instr、isolate_snapshot_data、isolate_snapshot_instr),这个方案是一个单端方案,只支持Android,并且只支持纯Flutter应用,基本上就把使用场景锁死了。

    2019-11-21
  • MaO
    请问flutter是否可以在屏幕的某个区块显示一个远端的h5页面,该页面可能需要获取手机端的登录等信息,也含有图片和css,js

    作者回复: 可以的,具体可以参考27节的分享

    2019-11-04
  • Android~小强
    动态化 老师 我觉得还是很重要的 dart可以动态化吗

    作者回复: Dart是否可以动态化取决于容器。现状是还不支持,从规划上看也受限于应用市场的政策,不属于后续重点发展方向。
    如果你的业务动态化需求很强,可以考虑在应用内部内置一些模块,快速搞一些简单的可配置能力;另一个方向是借助于符合审核标准的JS虚拟机去做一些事情:https://github.com/TGIF-iMatrix/MXFlutter

    2019-10-15
  • 早起不吃虫
    动态化能力是什么?

    作者回复: 指的是不依赖于程序安装包的更新,就能进行动态实时更新页面的技术。

    2019-09-22
  • Geek_b20f6f
    web容器不支持“区块”怎么说,实践上有一些场景在原生页面中嵌入一块H5片断。应该算支持吧?

    作者回复: 严格意义上可以算,但以区块的方式最大的问题在于需要原生能够感知webview的渲染高度,目前有一些hack的方法,比如lod完成时候执行一段js代码获取主文档高度,界面会有比较明显的抖动,所以实际一般很少用

    2019-09-17
  • 123456
    老师您好,上面图 4 主流跨平台框架对比图里,页面级支持和区块级支持分别是什么意思呀

    作者回复: 页面级和区块级支持表示,跨平台框架中的View和原生的View混用程度。比如Webview我们通常是打开一个新的页面,而RN和Flutter不仅可以支持打开新的页面,还可以在原生的页面中内嵌区块

    2019-08-16
  • 花有缺
    在跨平台领域,Qt和cocos都做的还不错,但是Qt用的c++语言开发,社区一直没咋起来,cocos2dx是游戏引擎,最初也是C++,后来转向lua和js,它自己封装了OpenGL ES的接口进行渲染,自己开发了一套UI框架,虽然这套UI框架并不完善,我觉得flutter和cocos有很多相似的地方,都是自己独立搞了一套渲染机制,一套UI框架,开发使用较为轻量的语言,而不是直接使用c++。

    作者回复: 赞

    2019-07-22
  • 钱钱钱我爱钱
    用过LuaView,
    2019-07-21
  • 工匠若水
    Skia
    2019-07-18
  • 子铭
    我做过mui,不知道这个技术归于哪一类呢

    作者回复: Web容器时代

    2019-07-15
收起评论
43
返回
顶部