Composable Vue, 编写可组合可复 的Vue 函数的最佳实践与技巧可组合的 Vue Composable Vue, 编写可组合可复⽤的 Vue 函数的最佳实践与技巧 ANTHONY FU Hangzhou, China 2021 Anthony Fu antfu antfu7 Anthony Fu antfu.me Vue 核⼼成员 / Vite 团队成员 VueUse, Slidev, Type Challenges 等项⽬创作者 全职开源 上下⽂丢失 有限的类型⽀持 按 API 类型组织 极易复⽤ (原⽣ JS 函数) 可灵活组合 (⽣命周期钩⼦可多次使⽤) 提供更好的上下⽂⽀持 更好的 TypeScript 类型⽀持 按功能/逻辑组织 可独⽴于 Vue 组件使⽤ 对象式 API 存在的问题 组合式 API 提供的能⼒ 什么是可组合的函数 Dark 可复⽤逻辑的集合,专注点分离 export function 'dark' : 'light' }, }) } 在 VueUse 中可⽤: usePreferredDark useLocalStorage useDark 组合关系 其中每⼀个函数都可以独⽴使⽤ 专注点分离 useDark usePreferredDark useLocalStorage useStorage useEventListener useMediaQuery0 码力 | 36 页 | 4.87 MB | 1 年前3
TypeScript Handbook(中文版)
15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 4 4.1 4.2 4.3 4.4 4.5 4.6 5 5.1 5.2 接口 类 函数 泛型 枚举 类型推论 类型兼容性 高级类型 Symbols Iterators 和 Generators 模块 命名空间 命名空间和模块 模块解析 声明合并 书写.d.ts文件 TypeScript 1.6 TypeScript 1.5 TypeScript 1.4 TypeScript 1.3 TypeScript 1.1 手册 基础类型 变量声明 接口 类 函数 泛型 枚举 类型推论 类型兼容性 高级类型 Symbols Iterators 和 Generators 模块 命名空间 命名空间和模块 模块解析 声明合并 书写.d.ts文件 文件,它包含了和输入文件中相同的JavsScript代 码。 一切准备就绪,我们可以运行这个使用TypeScript写的JavaScript应用了! 接下来让我们看看TypeScript工具带来的高级功能。 给 person 函数的参数添加 : string 类型注解,如下: function greeter(person: string) { return "Hello, " + person; } var0 码力 | 557 页 | 7.48 MB | 1 年前3
2019-2021 美团技术年货 前端篇之后,对网络资源、事件、DOM 变动 进行监听,并对监听结果根据特定规则进行分析加权,得到一个首屏加载完成 的状态标识; ● 运行阶段,在首屏加载完成之后对配置平台下发的云端 JSON 文件进行解 析,对符合配置规则的资源进行 HTTP XHR 预加载,从而实现文件的预缓存 功能。 下图为预缓存的整体方案设计: 48 > 2021年美团技术年货 图 15 预缓存方案设计 编译阶段 编译阶段会扩展现有的发布流水线,在 流程进行优化,设计分平台打包方案: 图 21 分平台打包 ● 修改 flutter-cli,使其支持 –responsiveSystem 命令行参数; ● 我 们 在 flutter_tools 中 的 AST 分 析 阶 段 增 加 了 额 外 的 处 理:Respon- siveSystem 关键字的匹配,同时结合编译平台(PC 或 Mobile)来进行 AST 节点的改写; 前端 < 53 ● 去除无用 定,效果更好)。 2.1.4 视图树生成 将扁平的数据源转化为树状结构的 DSL,这个过程如果是人脑来做会怎么思考呢? 先确定布局的整体结构是行布局或者列布局,然后再确定局部区域应该是什么布局结 构,最后组装起来形成视图树。这个过程与递归算法类似,因此我们采用了递归算法 前端 < 63 作为算法的主框架,同时引入了“横竖切割 + 布局结构 + 模型评估”三大利器。 利器一:横竖切割 生成0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版0. 写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 B 是要明显优于算 法 C 的。对于以上情况,我们很难仅凭时间复杂度来判定算法效率高低。然而,即使存在这些问题,复杂度分 析仍然是评判算法效率的最有效且常用的方法。 2.2.3. 函数渐近上界 设算法「计算操作数量」为 ?(?) ,其是一个关于输入数据大小 ? 的函数。例如,以下算法的操作数量为 ?(?) = 3 + 2? function algorithm(n) { var a = } ?(?) 是个一次函数,说明时间增长趋势是线性的,因此易得时间复杂度是线性阶。 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号被称为「大 ? 记号 Big‑? Notation」,代表函数 ?(?) 的「渐近上界 asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。0 码力 | 185 页 | 14.70 MB | 1 年前3
Hello 算法 1.0.0b1 TypeScript 版0. 写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 B 是要明显优于算 法 C 的。对于以上情况,我们很难仅凭时间复杂度来判定算法效率高低。然而,即使存在这些问题,复杂度分 析仍然是评判算法效率的最有效且常用的方法。 2.2.3. 函数渐近上界 设算法「计算操作数量」为 ?(?) ,其是一个关于输入数据大小 ? 的函数。例如,以下算法的操作数量为 ?(?) = 3 + 2? function algorithm(n: number): void{ } ?(?) 是个一次函数,说明时间增长趋势是线性的,因此易得时间复杂度是线性阶。 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号被称为「大 ? 记号 Big‑? Notation」,代表函数 ?(?) 的「渐近上界 asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。0 码力 | 186 页 | 14.71 MB | 1 年前3
阮一峰 JavaScript 教程目 录 致谢 介绍 前言 入门篇 导论 历史 基本语法 数据类型 概述 null,undefined 和布尔值 数值 字符串 对象 函数 数组 运算符 算术运算符 比较运算符 布尔运算符 二进制位运算符 其他运算符,运算顺序 语法专题 数据类型的转换 错误处理机制 编程风格 console 对象与控制台 标准库 Object 对象 属性描述对象 语言是一种“对象模型”语言。各种宿主 环境通过这个模型,描述自己的功能和操作接口,从而通过 JavaScript 控制这些功能。但是,JavaScript 并不是纯粹的“面 向对象语言”,还支持其他编程范式(比如函数式编程)。这导致几乎 任何一个问题,JavaScript 都有多种解决方法。阅读本书的过程 中,你会诧异于 JavaScript 语法的灵活性。 JavaScript 的核心语法部分相当精简,只包括两个部分:基本的语 还是值得学习,况且它的 入门真的不难。 JavaScript 的性能优势体现在以下方面。 (1)灵活的语法,表达力强。 JavaScript 既支持类似 C 语言清晰的过程式编程,也支持灵活的 函数式编程,可以用来写并发处理(concurrent)。这些语法特性已 经被证明非常强大,可以用于许多场合,尤其适用异步编程。 JavaScript 的所有值都是对象,这为程序员提供了灵活性和便利0 码力 | 540 页 | 3.32 MB | 10 月前3
TypeScript 4.0 使用手册
Gulp Knockout.js React与webpack React Angular 2 从JavaScript迁移到TypeScript 手册 基础类型 变量声明 接口 类 函数 泛型 枚举 类型推论 类型兼容性 高级类型 Symbols Iterators 和 Generators 模块 命名空间 命名空间和模块 模块解析 声明合并 JSX Decorators Gulp Knockout.js React与webpack React Angular 2 从JavaScript迁移到TypeScript 手册 基础类型 变量声明 接口 类 函数 字面量类型 泛型 枚举 类型推论 类型兼容性 高级类型 Symbols Iterators 和 Generators 模块 命名空间 命名空间和模块 模块解析 声明合并 Gulp Knockout.js React与webpack React Angular 2 从JavaScript迁移到TypeScript 手册 基础类型 变量声明 接口 类 函数 泛型 枚举 介绍 目录 Introduction - 12 - 本文档使用 书栈网 · BookStack.CN 构建 类型推论 类型兼容性 高级类型 Symbols Iterators0 码力 | 683 页 | 6.27 MB | 1 年前3
Hello 算法 1.1.0 TypeScript版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.1.0 Dart版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 378 页 | 18.45 MB | 1 年前3
共 53 条
- 1
- 2
- 3
- 4
- 5
- 6













