《Vue.js设计与实现》 读书笔记
本文最后更新于:2022年4月22日 上午
第一章 权衡的艺术,第二章 框架设计的核心要素
命令式(Jquery)和声明式
性能与可维护性权衡
结论:声明式代码的性能不优于命令式代码的性能
如:
命令式代码更新的性能消耗为 A(10ms)
命令式代码更新的性能消耗为 A(10ms) + B(5ms) 多出来需要找前后差异的时间
所以框架设计者需要考虑的是 在保持可维护性的同时让性能损失最小化
interHTML (模板) | 原生JS | 虚拟Dom |
---|---|---|
心智负担中等 | 心智负担大 | 心智负担小 |
性能差 | 性能好 | 可维护性强 |
性能不错 |
运行时和编辑时
如 render
函数就是纯运行时
在 render
函数前加一个 compiler
(编译时)则成了 编译时+ 运行时框架
声明的更新性能消耗 = 找出差异的性能消耗 + 直接修改的性能消耗
框架设计的核心要素
- 提升用户开发体验(友好的 warn警告)
- 打印
ref
值,控制台
→Console
→Enable custom formatters
控制框架代码体积
合理的利用 tree-shaking
,打包时移除 dead code
代码
if(__DEV__)
打包时会转换成if(false)
- 显示的告诉打包工具,某些函数没有副作用
/*#__PURE__*/
,打包时如果发现该函数没有被使用过,则会进行移除
应该输出怎样的产物
IIFE格式
(立即执行函数) 直接通过<script>
标签引入-browser.js
通过<script type='module'>
标签引入,给浏览器进行使用rollup
或webpack
打包工具使用
vue.esm-bundler.js
会根据开发环境来判断是否报开发时的warn
node.js
中的使用
cjs
格式,服务端渲染时需要
特性开关
依旧是利用tree-shaking
,打包时移除未使用的代码,减少体积
__VUE_OPTIONS_API
,vue3
如果不使用options api
可以将其设置为false
,减少代码体积- 统一错误处理 (后端中很常见)
- 良好的
TS
支持
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议,转载请注明出处。