-
可组合的 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 useDark(options: = v === preferredDark.value ? 'auto' : v ? 'dark' : 'light' }, }) } 在 VueUse 中可⽤: usePreferredDark useLocalStorage useDark 组合关系 其中每⼀个函数都可以独⽴使⽤ 专注点分离 useDark usePreferredDark
0 码力 |
36 页 |
4.87 MB
| 1 年前 3
-
基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 2.0 - > 16.3.0 -> 16.3.1 软件的版本通常由三位组成,形如: X.Y.Z 在发布重要版本时,可以发布alpha, rc 等先行版本 alpha和rc等修饰版本的关键字后面可 以带上次数和meta信息 遵守 semver 规范的优势 优势: ·避免出现循环依赖 ·依赖冲突减少 语义化版本(Semantic Versioning)规范格式 次版本号:当你做了向下兼容的功能性新增,
0 码力 |
30 页 |
5.38 MB
| 1 年前 3
-
误,你仍然可以使用TypeScript。但在这种情况下,TypeScript会警告你代码可能 不会按预期执行。 接口 让我们开发这个示例应用。这里我们使用接口来描述一个拥 有 firstName 和 lastName 字段的对象。 在TypeScript里,只在两个类型内部的 结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含 了接口要求的结构就可以,而不必明确地使用 implements 语句。 document.body.innerHTML = greeter(user); 类 最后,让我们使用类来改写这个例子。 TypeScript支持JavaScript的新特性,比如 支持基于类的面向对象编程。 让我们创建一个 Student 类,它带有一个构造函数和一些公共字段。 注意类和接 口可以一起共作,程序员可以自行决定抽象的级别。 还要注意的是,在构造函数的参数上使用 public greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的类只是JavaScript里常用的基于原型面向对象编程的简写。 运行TypeScript Web应用 在 greeter.html 里输入如下内容:
TypeScript 0 码力 |
557 页 |
7.48 MB
| 1 年前 3
-
1.6.1.38 1.6.2 1.6.2.1 1.6.3 1.6.4 1.7 1.7.1 1.7.2 1.7.3 1.7.4 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON (JavaScript 对象表示法) 学习 JS 模板 学习静态网页生成器 通过JS学习计算机科学 学习前端应用架构 学习数据(例如,JSON)API 的设计 学习 React CSS 学习搜索引擎优化 学习 JavaScript 学习 Web 动画 学习 DOM、BOM 和 jQuery 学习网页字体 & 图标 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON (JavaScript 对象表示法) 学习 JS 模板 学习静态网页生成器 通过JS学习计算机科学 学习前端应用架构 学习数据(例如,JSON)API 的设计 学习 React 们远去。 2016 前端开发回顾 14 几乎人人都意识到开发网页的时候必须考虑多设备适配策略。 使用其他语言的开发者持续涌入 JS 领域,他们也带来了一些东西:例如类型检测,和对 类语法以及面向对象思想的执念。 前端开发引入了热模块替换技术和时间旅行调试。 原生 JS 浏览器模块加载器更受期待了。 Enforcing CSS 和 JS 格式规范变得更受重视(就 ES3 到 ES6 编码以及
0 码力 |
164 页 |
6.43 MB
| 1 年前 3
-
ECMAScript 6简介 let 和 const 命令 变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 Symbol Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator 函数的语法 Generator 函数的异步应用 async 函数 Class map, ast } // Babel AST转码 babel.transformFromAst(ast, code, options); // => { code, map, ast } 配置对象 options ,可以参看官方文档http://babeljs.io/docs/usage/options/。 下面是一个例子。 var es6Code = 'let x = n => n + 代码,第二个参数是转换的配置对象。 ECMAScript 6简介 16 babel-polyfill Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API,比 如 Iterator 、 Generator 、 Set 、 Maps 、 Proxy 、 Reflect 、 Symbol 、 Promise 等全局对象,以及一些定义在全局对象上的方法(比
0 码力 |
679 页 |
2.66 MB
| 1 年前 3
-
Attribute 自定义事件 插槽 提供 / 注入 动态组件 & 异步组件 模板引用 处理边界情况 过渡&动画 过渡 & 动画概述 进入过渡 & 离开过渡 列表过渡 状态过渡
可复用性&组合 混入 自定义指令 传入 渲染函数 插件 高阶指南 - 2 - 本文档使用 书栈网 · BookStack.CN 构建 响应性 深入响应性原理 响应式原理 响应式计算和侦听 介绍 - 16 - 本文档使用 书栈网 · BookStack.CN 构建 在 Vue 中,组件本质上是一个具有预定义选项的实例。在 Vue 中注册组件很简单:如对 App
对象所做的那样创建一个组件
对象,并将其定义在父级组件的 components 选项中: 1. // 创建 Vue 应用 2. const app = Vue.createApp(...) 3. 4. // 1.
2.
3. 9. 0 码力 |
368 页 |
3.97 MB
| 1 年前 3
-
document.body.textContent = greeter(user); 最后,让我们使用类来改写这个例子。 TypeScript支持JavaScript的新特性,比如支持基于类的 面向对象编程。 让我们创建一个 Student 类,它带有一个构造函数和一些公共字段。 注意类和接口可以一起共作, 程序员可以自行决定抽象的级别。 还要注意的是,在构造函数的参数上使用 public greeter(user); 重新运行 tsc greeter.ts ,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的 类只是JavaScript里常用的基于原型面向对象编程的简写。 在 greeter.html 里输入如下内容: 1. 2. 3.
TypeScript Greeter copy-html 会被首先执行。 我们还修改了 default 任务,让它使用 tsify 插件调用 Browserify,而不是 gulp-typescript 。 方便的是,两者传递相同的参数对象到TypeScript编 Gulp - 42 - 本文档使用 书栈网 · BookStack.CN 构建 译器。 调用 bundle 后,我们使用 source (vinyl-source-stream的别名)把输出文件命名 0 码力 |
683 页 |
6.27 MB
| 1 年前 3
-
与设备 自身能力相关的问题,即: 4 > 2021年美团技术年货 (1) 如何监听设备的 VSync 信号并通知 Flutter 引擎? (2) OpenGL/Vulkan 用于上 屏的窗口对象从何而来? VSync 信号的监听及传递 在 Flutter 引擎的 Android 实现中,设备的 VSync 信号通过 Choreographer 触发, 它产生及消费流程如下图所示: Flutter 引擎的图形渲染提供 用于上屏的窗口对象。同样,我们参考 Flutter for Android 的实现,看一下 Android 系统是怎么做的: Flutter 在 Android 上支持 Vulkan 和 OpenGL 两种渲染引擎,篇幅原因我们只关注 OpenGL。抛开复杂的注册及调用细节,本质上整个流程主要做了三件事: ● 创建了一个视图对象,提供可用于直接绘制的 Surface,将它通过 前端 < 7 ● 在原生侧获取 Surface 关联的本地窗口对象,并交给 Flutter 的平台容器; ● 将本地窗口对象转换为 OpenGL ES 可识别的绘图表面(EGLSurface),用 于 Flutter 引擎的渲染上屏。 接下来我们用鸿蒙提供的平台能力实现这三点。 a. 可用于直接绘制的视图对象 鸿蒙系统的 UI 框架提供了很多常用视图组件(Component),比如按钮、文字、图
0 码力 |
738 页 |
50.29 MB
| 1 年前 3
-
null,undefined 和布尔值 数值 字符串 对象 函数 数组 运算符 算术运算符 比较运算符 布尔运算符 二进制位运算符 其他运算符,运算顺序 语法专题 数据类型的转换 错误处理机制 编程风格 console 对象与控制台 标准库 Object 对象 属性描述对象 Array 对象 包装对象 Boolean 对象 - 1 - 本文档使用 书栈(BookStack 书栈(BookStack.CN) 构建 Number 对象 String 对象 Math 对象 Date 对象 RegExp 对象 JSON 对象 面向对象编程 实例对象与 new 命令 this 关键字 对象的继承 Object 对象的相关方法 严格模式 异步操作 概述 定时器 Promise 对象 DOM 概述 - 2 - 本文档使用 书栈(BookStack.CN) 构建 - 9 - 本文档使用 书栈(BookStack.CN) 构建 从语法角度看,JavaScript 语言是一种“对象模型”语言。各种宿主 环境通过这个模型,描述自己的功能和操作接口,从而通过 JavaScript 控制这些功能。但是,JavaScript 并不是纯粹的“面 向对象语言”,还支持其他编程范式(比如函数式编程)。这导致几乎 任何一个问题,JavaScript 都有多种解决方法。阅读本书的过程
0 码力 |
540 页 |
3.32 MB
| 10 月前 3
-
来完成本书的创作。 本人自知学疏才浅,书中内容虽然已经过一段时间的打磨,但一定仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 www.hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手 ‧ 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。 ‧ 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 ‧ 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之 不会之间反复横跳,那么本书正是为你量身定制的! 如果你已经积累一定的刷题量,熟悉大部分题型,那么本书可助你回顾与梳理算法知识体系,仓库源代码可 以当作“刷题工具库”或“算法字典”来使用。 若你是算法“大神”,我们期待收到你的宝贵建议,或者一起参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度
0 码力 |
378 页 |
18.46 MB
| 10 月前 3