2019-2021 美团技术年货 前端篇715 让 Flutter 在鸿蒙系统上跑起来 作者:杨超 前言 鸿蒙系统 (HarmonyOS)是华为推出的一款面向未来、面向全场景的分布式操作系 统。在传统单设备系统能力的基础上,鸿蒙提出了基于同一套系统能力、适配多种终 端形态的分布式理念。自 2020 年 9 月 HarmonyOS 2.0 发布以来,华为加快了鸿 蒙系统大规模落地的步伐,预计 2021 年底,鸿蒙系统会覆盖包括手机、平板、智能 为迎接鸿蒙系统后续的大规模推广也提前做好了技术储备。 当然,故事到这里并没有结束。在最基本的运行和交互能力之上,我们更需要关注 Flutter 与鸿蒙自身生态的结合:如何优雅地适配鸿蒙的分布式技术?如何用 Flutter 实现设备之间的快速连接、资源共享?现有的众多 Flutter 插件如何应用到鸿蒙系统 上?未来 MTFlutter 团队将在这些方面做更深入的探索,因为解决好这些问题,才是 js(1.1M),各页面的业务代码 xxx.part.js(使用 FutureBuilder 后)、图片文 件。直接应用这些资源到项目中,会遇到以下问题: ● 功能无法及时更新:浏览器对同名文件的缓存,可能导致程序代码不被及时更 新或者出现执行错乱。 26 > 2021年美团技术年货 ● 首屏渲染性能差:main.dart.js 文件过大,单一文件加载、解析时间过长,势 必会影响首屏的渲染时间。0 码力 | 738 页 | 50.29 MB | 1 年前3
TypeScript 4.0 使用手册
"ReactDOM" 39. } 40. }; 大家可能对 externals 字段有所疑惑。 我们想要避免把所有的React都放到一个文件里,因为会增 加编译时间并且浏览器还能够缓存没有发生改变的库文件。 理想情况下,我们只需要在浏览器里引入React模块,但是大部分浏览器还没有支持模块。 因此大部 分代码库会把自己包裹在一个单独的全局变量内,比如: jQuery 或 _ ,因为不管这个有条件类型最终结果是什么,它只能是 string 或 number 。 如果有条件类型里待检查的类型是 naked type parameter ,那么它也被称为“分布式有条件类 型”。 分布式有条件类型在实例化时会自动分发成联合类型。 例如,实例化 T extends U ? X : Y , T 的类型为 A | B | C ,会被解析为 (A extends U 的引用被解析为联合类型的一部分(比如, T 指向 某一单个部分,在有条件类型分布到联合类型之后)。 此外,在 X 内对 T 的引用有一个附加的类 型参数约束 U (例如, T 被当成在 X 内可赋值给 U )。 分布式有条件类型 高级类型 - 191 - 本文档使用 书栈网 · BookStack.CN 构建 例子 1. type BoxedValue= { value: T }; 2. type 0 码力 | 683 页 | 6.27 MB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版Symbol 239 上面代码将导致其他脚本都无法引用 FOO_KEY 。但这样也有一个问题,就是如果 多次执行这个脚本,每次得到的 FOO_KEY 都是不一样的。虽然Node会将脚本的执 行结果缓存,一般情况下,不会多次执行同一个脚本,但是用户可以手动清除缓 存,所以也不是完全可靠。 内置的Symbol值 除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol值,指向语 foo = 'baz', 500); 上面代码输出变量 foo ,值为 bar ,500毫秒之后变成 baz 。 这一点与 CommonJS 规范完全不同。CommonJS 模块输出的是值的缓存,不存在 动态更新,详见下文《Module 的加载实现》一节。 最后, export 命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果 处于块级作用域内,就会报错,下一节的 import Module 的加载实现 587 上面代码说明, lib.js 模块加载以后,它的内部变化就影响不到输出 的 mod.counter 了。这是因为 mod.counter 是一个原始类型的值,会被缓存。 除非写成一个函数,才能得到内部变动后的值。 // lib.js var counter = 3; function incCounter() { counter++; } module0 码力 | 679 页 | 2.66 MB | 1 年前3
新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜关键点 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive Programming ) next: JavaScript (2)AKKA:分布式计算框架 2014年年 Scala2.11 2016年年 Scala2.12 2017年年 Scala2.12.4 创建异步任务就是这么简洁 异步任务之间的连续处理理也是这么简洁 例例⼦子Scala实现 对⽐比:Java8 CompletableFuture实现 AKKA分布式计算框架 • 核⼼心概念:Actor,是⾏行行为和状态的容器器 CalculateActor request request 路路由 result 最终结果 结果汇聚 Dispatcher,线程池 计算 例例⼦子AKKA实现 例例⼦子AKKA实现(续) AKKA的分布式 节点1 节点2 节点3 节点4 节点5 节点6 next: Java 2011年年 2014年年 2017年年 Java 7:fork/join Java 8:CompletableFuture0 码力 | 42 页 | 9.85 MB | 1 年前3
《玩转webpack》加餐:webpack5专题er#readme ⻓期缓存:确定的模块 Id、chunk 和导出名称 在生产模式下,默认的 chunkIds: “deterministic”, moduleIds: “deterministic”。设置成 deterministic 时默认最小 3 位数字会被 使用 chunkIds moduleIds webpack 5 webpack 4 ⻓期缓存:确定的模块 Id、chunk 和导出名称 持久化缓存 在 webpack 4 ⾥⾯,可以使⽤ cache-loader 将编译结果写⼊硬盘缓存,还可以使⽤ babel-loader,设置 option.cacheDirectory 将 babel-loader 编译的结果写进磁盘。 webpack 5 缓存策略 • 默认开启缓存,缓存默认是在内存⾥。可以对 cache 进⾏设置 。 • 缓存淘汰策略:⽂件缓存存储在 node_modules/ node_modules/.cache/webpack,最⼤ 500MB,缓存时常两个星期,旧的缓存先淘汰。 webpack 5 webpack 4 构建优化:Tree Shaking 优化-嵌套的 Tree shaking webpack 5 webpack 4 构建优化:Tree Shaking 优化-内部模块 Tree shaking 代码⽣成:⽀持⽣成 ES6 代码 webpack0 码力 | 40 页 | 12.03 MB | 1 年前3
Hello 算法 1.1.0 Dart版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 378 页 | 18.45 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.1.0 TypeScript版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Dart 版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 378 页 | 18.46 MB | 10 月前3
Hello 算法 1.2.0 简体中文 JavaScript 版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 379 页 | 18.47 MB | 10 月前3
共 39 条
- 1
- 2
- 3
- 4













