2019-2021 美团技术年货 前端篇其他必要的平台能力 为了保证 Flutter 应用能够正常运行,除了最基本的渲染和交互外,我们的嵌入层还 要提供资源管理、事件循环、生命周期同步等平台能力。对于这些能力 Flutter 大多 都在嵌入层的公共部分有抽象类声明,只需要使用鸿蒙 API 重新实现一遍即可。 比如资源管理,引擎提供了 AssetResolver 声明,我们可以使用鸿蒙 Rawfile API 来实现: class 当然,故事到这里并没有结束。在最基本的运行和交互能力之上,我们更需要关注 Flutter 与鸿蒙自身生态的结合:如何优雅地适配鸿蒙的分布式技术?如何用 Flutter 实现设备之间的快速连接、资源共享?现有的众多 Flutter 插件如何应用到鸿蒙系统 上?未来 MTFlutter 团队将在这些方面做更深入的探索,因为解决好这些问题,才是 真正能让应用覆盖用户生活的全场景的关键。 参考文献 差异,但由于组件库在各端的实现不尽相同,很难做到完美的一致性体验。 1.1.2 提升多端迭代效率 由于各端技术体系的不同,涉及多端的需求往往需要不同的开发、测试团队各自完成 开发、联调、测试、上线等流程,占用资源巨大,在各团队不可并行支持的情况下, 前端 < 15 甚至可能导致整个业务交付周期被拉长。虽然 React Native、Flutter 等跨平台方案 解决了一部分复用的问题,但显然在商家端业务场景下是远远不够的,我们的目标是0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 算法(algorithm)是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 排序小型数据集。 第 1 章 初识算法 www.hello‑algo.com 16 ‧ 货币找零的步骤本质上是贪心算法,每一步都采取当前看来最好的选择。 ‧ 算法是在有限时间内解决特定问题的一组指令或操作步骤,而数据结构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法为数据结构注入生命力。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木代表 试,统计 平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0 JavaScript版如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将 引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 com 16 ‧ 整理扑克的过程与插入排序算法非常类似。插入排序算法适合排序小型数据集。 ‧ 货币找零的步骤本质上是贪心算法,每一步都采取当前看来最好的选择。 ‧ 算法是在有限时间内解决特定问题的一组指令或操作步骤,而数据结构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法是数据结构发挥作用的舞台。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 算法(algorithm)是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 算法适合排序小型数据集。 第 1 章 初识算法 hello‑algo.com 16 ‧ 货币找零的步骤本质上是贪心算法,每一步都采取当前看来最好的选择。 ‧ 算法是在有限时间内解决特定问题的一组指令或操作步骤,而数据结构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法是数据结构发挥作用的舞台。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,这本书 将引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,相同的输入和运行条件下,输出始终相同。 15 ‧ 整理扑克的过程与插入排序算法非常类似。插入排序算法适合排序小型数据集。 ‧ 货币找零的步骤本质上是贪心算法,每一步都采取当前看来的最好的选择。 ‧ 算法是在有限时间内解决特定问题的一组指令或操作步骤,而数据结构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法则是发挥数据结构作用的舞台。 ‧ 我们可以将数据结构与算法类比为拼装积木,积 在各种机器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,我们可以考虑仅0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版了!因为这正是本书存在的价值,接下来,本书将会一步步地引导你进入数据结构与算法的知 识殿堂。 1.2. 算法是什么 1.2.1. 算法定义 「算法 Algorithm」是在有限时间内解决特定问题的一组指令或操作步骤。算法具有以下特性: ‧ 问题是明确的,需要拥有明确的输入和输出定义。 ‧ 解具有确定性,即给定相同输入时,输出一定相同。 ‧ 具有可行性,可在有限步骤、有限时间、有限内存空间下完成。 算法在生活中随处可见,并不高深莫测。我们已经不知不觉地学习到许多“算法”,用于解决生活中大大 小小的问题。 ‧“查字典”的原理和二分查找算法一致。二分体现分而治之的重要算法思想。 ‧ 算法是在有限时间内解决特定问题的一组指令或操作步骤,数据结构是在计算机中组织与存储数据的方 式。 ‧ 数据结构与算法两者紧密联系。数据结构是算法的底座,算法是发挥数据结构的舞台。 ‧ 乐高积木对应数据,积木形状和连接形式对应数据结构,拼装积木的流程步骤对应算法。 在各种机 器上展开测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入 数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达 到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。 理论估算 既然实际测试具有很大的局限性,那么我们是否可以仅通0 码力 | 185 页 | 14.70 MB | 1 年前3
阮一峰 JavaScript 教程JavaScript 运行环境,兼容性很好,程序不做调整或只 做很小的调整,就能在所有浏览器上运行。 全世界程序员都在使用 JavaScript,它有着极大的社区、广泛的文 献和图书、丰富的代码资源。绝大部分你需要用到的功能,都有多个开 源函数库可供选用。 作为项目负责人,你不难招聘到数量众多的 JavaScript 程序员;作 为开发者,你也不难找到一份 JavaScript 的工作。 属性是否存在:in 运算符 属性的遍历:for…in 循环 with 语句 参考链接 对象(object)是 JavaScript 语言的核心概念,也是最重要的数 据类型。 什么是对象?简单说,对象就是一组“键值对”(key-value)的集 合,是一种无序的复合数据集合。 对象 概述 生成方法 对象 - 94 - 本文档使用 书栈(BookStack.CN) 构建 1. var obj = CN) 构建 数组 数组 定义 数组的本质 length 属性 in 运算符 for…in 循环和数组的遍历 数组的空位 类似数组的对象 参考链接 数组(array)是按次序排列的一组值。每个值的位置都有编号(从0 开始),整个数组用方括号表示。 1. var arr = ['a', 'b', 'c']; 上面代码中的 a 、 b 、 c 就构成一个数组,两端的方括号是数组0 码力 | 540 页 | 3.32 MB | 10 月前3
前端开发者指南(2017)案。 本书不是一本囊括所有前端可用资源的综合纲领。其价值在于为恰好够用的分类信息搜罗简 洁、聚焦且符合时宜的甄选内容,以免在特别话题下钻了牛角尖。 预期本书每年都迭代一次内容。 本书分为三部分。 第一部分:前端实践 第一部分概述了前端工程实践。 第二部分:学习前端开发 第二部分指出了学习成为一个前端开发者所需的自学资源和教学资源(译者注:教学资源包 括有讲师指导的付费课程、计划、学院和训练营)。 com/compare-front-end-development-and-back-end- development 前端开发者所使用的核心技术有如下这些(建议按顺序进行学习): 1. 统一资源定位符 (URLs) 2. 超文本传输协议 (HTTP) 3. 超文本标记语言 (HTML) 4. 层叠样式表 (CSS) 5. JavaScript 编程语言 (ECMAScript 262) 相关规范: 超文本传输协议 -- HTTP/1.1 HTTP/2 统一资源定位符 (URL) 统一资源定位符(URL)也被称为网址,是关于资源的引用,明确了计算机网络资源的 地址以及检索该资源的机制。URL 是统一资源标志符(URI)的一种特定类型,尽管许 多人认为这两个概念可以互换。URL 表明了获取所需资源的方式,然而并非每个 URI 都 会如此。URLs 通常被用于网页(htt0 码力 | 164 页 | 6.43 MB | 1 年前3
ECMAScript规范 第三版 中文版版或更新版 本,使用 UCS-2 或 UTF-16 作为被采纳的编码格式的 ISO/IEC 10646-1 第 3 级实现。如果被采 纳的 ISO/IEC 10646-1 子集没有额外指明,则被认定为组号是 300 的 BMP 子集。如果被采纳的 编码格式没有额外指明,则被认定为 UTF-16 编码格式。 符合标准的 ECMAScript 实现被允许提供额外的、在此规范描述之外的类型,值,对象, 语言的非正式概述——这个语言的所有部分的描述。严格 说来, 这个概述不是标准的一部分。 ECMAScript 是基于对象的:语言的基本部分和宿主设施由对象提供,一个 ECMAScript 程 序是一组可通信的对象。ECMAScript 对象(object)都是未排序的属性 (properties)集合,零个或 多个特征(attributes)来分别确定其中的各属性应如何使用——举个例子:当某个 属性的 类对象:Error,EvalError(求 值错误),RangeError(越界错误), ReferenceError(引 用错误),SyntaxError(语法错误),TypeError(类 型错误), URIError(唯一资源定位符错误)。 ECMAScript 还定义了一个内置运算符(operators)集合。严格地说,它们可能不是函数或方 法。ECMAScript 运算符包含了各种各样的操作:乘法运算符,加法运算符,位移运算符,关系0 码力 | 58 页 | 563.06 KB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址 不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向 的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数 组),变量指向的内存地址,保存的只是一个指针, const 只能保证这个指针是 固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个 对象声明为常量必须非常小心。 const push('Hello'); // 可执行 a.length = 0; // 可执行 a = ['Dave']; // 报错 上面代码中,常量 a 是一个数组,这个数组本身是可写的,但是如果将另一个数 组赋值给 a ,就会报错。 如果真的想将对象冻结,应该使用 Object.freeze 方法。 const foo = Object.freeze({}); // 常规模式时,下面一行不起作用; } let { foo, bar } = example(); (3)函数参数的定义 解构赋值可以方便地将一组参数与变量名对应起来。 // 参数是一组有次序的值 function f([x, y, z]) { ... } f([1, 2, 3]); // 参数是一组无次序的值 function f({x, y, z}) { ... } f({z: 3, y: 2, x: 1});0 码力 | 679 页 | 2.66 MB | 1 年前3
共 16 条
- 1
- 2













