- 博客(16)
- 收藏
- 关注
原创 src 和 href 的区别
src 属性的主要作用是将某个资源嵌入到当前元素中,并替换当前元素的内容。href 属性创建一个链接,建立了当前页面与目标资源之间的关联,不会将目标资源直接嵌入到当前页面中。
2024-08-21 21:11:17
363
原创 框架设计的核心要素
而 ESM 具有静态分析特性,可以在编译时确定哪些代码被使用,哪些代码可以安全地移除,ESM 的这个特性使得这种分析和进一步的优化成为可能。“特性开关”指的是框架设计中允许开发者关闭不需要的功能的机制。如果是生产环境,输出警告信息的代码就是 dead code,在构建资源的时候就会被移除,这样就能实现 [在开发环境中为开发者提供友好的警告信息的同时,又不会增加生产环境代码的体积] 的目的。而通常产生副作用的代码都是模块内函数的顶级调用,所以打 /*#__PURE__*/ 注释这件事不会造成很大的心智负担。
2024-08-15 23:30:48
931
原创 权衡的艺术
当我们对页面做出改变时,Vue 首先在虚拟 DOM上 进行操作,而不是直接修改真实 DOM,这样,操作的开销就会小很多。可以把虚拟 DOM 工作流程简单理解为像是在草稿纸上修改内容一样,一通操作后再把确定下来的结果高效地应用到真实 DOM 中,减少了重绘和重排。声明式代码的可维护性更强。视图层框架通常分为命令式和声明式,命令式的代码描述的是“做事的过程”,声明式的更加关注结果。为 0 时,这两个范式的性能相同,但是声明式的性能无法超越命令式的性能。Vue.js 内部实现是命令式的,而暴露给用户的是声明式。
2024-08-15 20:04:40
708
原创 VitePress报错:Error: No pnpm version is specified. Please specify it by one of the following ways
VitePress 搭建自己的博客,有关使用 pnpm 时,deploy.yml 的额外配置
2024-04-20 17:42:11
615
1
原创 Vue.js 3 的设计思路
介绍了声明式、虚拟 DOM 的概念;讲解了最基本渲染器的实现逻辑;讨论了组件的本质;以及整体去看编译器和渲染器的关系。
2024-04-18 21:28:20
1006
1
原创 《Type Challenges》14 - 第一个元素
我们在定义类型别名的时候,已经约束了 'T' 必须是一个数组类型,但是 'T' 仍然有可能是一个空数组类型,因此我们用 '[infer F, ...any[]]' 这个元组类型来安全处理它是空数组的情况。在我的代码中,定义了一个名为 'First' 的泛型类型别名,泛型 'T extends any[]' 表示T是一个数组类型,可以是 'number[]'、'string[]' 等任何类型的数组,包括空数组 '[]',不确定数组中元素的类型,但一定是某一种数组。类型推断('infer')
2024-03-19 23:26:48
298
1
原创 《Type Challenges》13 - Hello World
可以给任何类型起一个名字,包括原始类型、联合类型、元组类型等等;不能被扩展(extends) 或 实现(implements);类型别名用来给一个类型起个新名字,使得类型更易于理解和使用。通常用来定义对象的形状。可以被扩展 和 实现。
2024-03-19 22:14:31
301
1
原创 git报错:Failed to connect to github.com port 443 after 21061 ms: Couldn‘t connect to server
git报错,关键词443,问题可能出现在代理服务器的配置上。
2024-01-17 14:15:36
1780
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅