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
廖雪峰JavaScript教程2.6 条件判断 2.7 循环 2.8 Map和Set 2.9 iterable 3 函数 3.1 函数定义和调用 3.2 变量作用域 3.3 方法 3.4 高阶函数 3.4.1 map/reduce 3.4.2 filter 3.4.3 sort 3.5 闭包 3.6 箭头函数 3.7 generator 4 标准对象 4.1 Date 4.2 RegExp 4 z = 5; 10. } 11. } JavaScript本身对嵌套的层级没有限制,但是过多的嵌套无疑会大大增加看懂代码的难度。遇到这种 情况,需要把部分代码抽出来,作为函数来调用,这样可以减少代码的复杂度。 以 // 开头直到行末的字符被视为行注释,注释是给开发人员看到,JavaScript引擎会自动忽略: 1. // 这是一行注释 2. alert('hello'); 比较。 另一个例外是 NaN 这个特殊的Number与所有其他值都不相等,包括它自己: 1. NaN === NaN; // false 唯一能判断 NaN 的方法是通过 isNaN() 函数: 1. isNaN(NaN); // true 最后要注意浮点数的相等比较: 1. 1 / 3 === (1 - 2 / 3); // false 这不是JavaScript的设计缺陷。浮0 码力 | 264 页 | 2.81 MB | 10 月前3
Vue.js v3.0 教程(Vue3 教程)动态组件 & 异步组件 模板引用 处理边界情况 过渡&动画 过渡 & 动画概述 进入过渡 & 离开过渡 列表过渡 状态过渡 可复用性&组合 混入 自定义指令 传入 渲染函数 插件 高阶指南 - 2 - 本文档使用 书栈网 · BookStack.CN 构建 响应性 深入响应性原理 响应式原理 响应式计算和侦听 组合 API 介绍 Setup 生命周期钩子 自定义元素交互 Data 选项 事件 API 过滤器 片段 函数式组件 - 3 - 本文档使用 书栈网 · BookStack.CN 构建 全局 API 全局 API Treeshaking 内联模板 Attribute key attribute 按键修饰符 在 prop 的默认函数中访问 this 渲染函数 API Slot 统一 过渡的 class 名更改 v-model 我们刚才简单介绍了 Vue 核心最基本的功能——本教程的其余部分将更加详细地涵盖这些功能以及其它 高阶功能,所以请务必读完整个教程! 与自定义元素的关系 准备好了吗? 介绍 - 19 - 本文档使用 书栈网 · BookStack.CN 构建 每个 Vue 应用都是通过用 createApp 函数创建一个新的应用实例开始的: 1. const app = Vue.createApp({ /*0 码力 | 368 页 | 3.97 MB | 1 年前3
JavaScript Promise迷你书(中文版)它是基于并列/并行处理设计的一种编程语言。 现在JavaScript也拥有了这种特性,这就是本书所介绍的JavaScript Promise。 另外,如果说到基于JavaScript的异步处理,我想大多数都会想到利用回调函数。 使用了回调函数的异步处理 ---- getAsync("fileA.txt", function(error, result){ if(error){// 取得失败时的处理 throw Promise 迷你书(中文版) 6 // 取得成功时的处理 }); ---- <1> 传给回调函数的参数为(error对象, 执行结果)组合 Node.js等则规定在JavaScript的回调函数的第一个参数为 Error 对象,这也是它的一个 惯例。 像上面这样基于回调函数的异步处理如果统一参数使用规则的话,写法也会很明了。 但是,这也仅是编码规约而已,即使采用不同的写法也不会出错。 注册这个promise对象执行成功 时和失败时相应的回调函数。 这和回调函数方式相比有哪些不同之处呢? 在使用promise进行一步处理的时候,我们 必须按照接口规定的方法编写处理代码。 也就是说,除promise对象规定的方法(这里的 then 或 catch )以外的方法都是不可以使 用的, 而不会像回调函数方式那样可以自己自由的定义回调函数的参数,而必须严格 遵守固定、统一的编程方式来编写代码。0 码力 | 112 页 | 1010.02 KB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版0. 写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 的。对于以上情况,我们很难仅凭时间复杂度来判定算法效率高低。然而,即使存在这些问题,复杂度分 析仍然是评判算法效率的最有效且常用的方法。 2.2.3. 函数渐近上界 设算法「计算操作数量」为 ?(?) ,其是一个关于输入数据大小 ? 的函数。例如,以下算法的操作数量为 ?(?) = 3 + 2? function algorithm(n) { var a = 1; // +1 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. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 的。对于以上情况,我们很难仅凭时间复杂度来判定算法效率高低。然而,即使存在这些问题,复杂度分 析仍然是评判算法效率的最有效且常用的方法。 2.2.3. 函数渐近上界 设算法「计算操作数量」为 ?(?) ,其是一个关于输入数据大小 ? 的函数。例如,以下算法的操作数量为 ?(?) = 3 + 2? function algorithm(n: number): void{ var a: number } ?(?) 是个一次函数,说明时间增长趋势是线性的,因此易得时间复杂度是线性阶。 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号被称为「大 ? 记号 Big‑? Notation」,代表函数 ?(?) 的「渐近上界 asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。0 码力 | 186 页 | 14.71 MB | 1 年前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
2019-2021 美团技术年货 前端篇限制问题: ● 不能在包含 JSX 元素的 map 循环中使用 if 表达式 ● 不能使用 Array#map 之外的方法操作 JSX 数组 ● 不能在 JSX 参数中使用匿名函数 ● 暂不支持在 render() 之外的方法定义 JSX ● 不允许在 JSX 参数 (props) 中传入 JSX 元素 ● 不能在 JSX 参数中使用对象展开符 同时也支持大部分 自定义渲染器完成页面绘制 优势 性能损耗低 无语法限制 劣势 语法限制大 性能损耗大 对比来看,重编译方案有一个严重的问题:语法限制。因为大部分前端开发者们已 经对灵活的语法有一定的依赖性,比如会使用高阶组件、在条件判断的时候写很多 return 等等,这种写法很难在编译过程被准确命中。因此,编译时方案就会制定一些 语法规则来限制开发者的写法。重运行方案则没有语法限制问题,可以随意使用各种 具备基础功能的元素,对应原子 理论中的原子;第二类“业务组件”,类似于商品卡片等,是由“基础控件”组成(比 如商品卡片由“标签控件”与“图片控件”组成),同时“业务组件”还能相互组合, 成为更高阶的“复杂组件”,类似于原子理论中的分子。“业务组件”的组合又是千变 万化的,不同样式的业务组件可以组成类似“商家列表”、“菜品列表”等“模板”, 而“模板”与“基本控件”组合在一起,就成为了“页面”。0 码力 | 738 页 | 50.29 MB | 1 年前3
ECMAScript规范 第三版 中文版.......................................................................................12 4.3.4 构造函数................................................................................................... .......................................................................................55 10.1.1 函数对象................................................................................................. ........................................................................................58 10.2.3 函数代码.................................................................................................0 码力 | 58 页 | 563.06 KB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 问 题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序 函数: ‧ 如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺 畅、性能不错,看上去并没有什么问题。 ‧ 但如果学过算法,我们就会知道内置排序函数的时间复杂度是 ?(? log ?) ;而如果给定的数据是固定 位数的整数(例如学号),那么我们就可以0 码力 | 379 页 | 18.47 MB | 10 月前3
共 51 条
- 1
- 2
- 3
- 4
- 5
- 6













