1. vue3为什么采用声明式
为什么vue没有和JQ一样,采用命令式来编写框架呢主要是考虑到可维护性,虽然命令式的写法更加直观,但是要维护实现目标的整个过程,包括dom的创建和删除,对于使用框架的用户来说,会带来较大的心智负担。
2. 虚拟dom一定会比直接操作dom性能更好么?
答案当然是不一定的。虚拟dom=找两次变化的差异+修改dom, 直接操作dom则会省略找差异的过程,所以只有在多次频繁操作dom,才会出线虚拟dom会比直接操作dom性能好的结论。
3. 框架设计的核心要素?
- 提升用户的开发体验
主要是输出比较清晰的提示信息 - 控制框架的代码体积
比如说在生产环境,去掉开发环境中的一些提示 - 要做到良好的Tree-Shaking
将没用的组件在打包的时候shaking掉(rollup/webpack),要正确的使用/*#_PURE_*/
- 输出各种情况需要的构建产物
IIFE: 立即调用的函数表达式,主要是用于script的直接引入
ESM: 主要用于script type=module的时候
- 使用特性开关
可以通过新增特性开关,将一些不常使用或者新的功能关闭,从而使用Tree-Shaking减小体积 - 良好的错误处理
框架内部进行错误捕获,然后通过用户自定义的错误处理函数进行处理。现在看到的是vue内部也是用try catch封装了一个方法,进行错误捕获 - 良好的TS支持
在这块,我们要明白,框架使用TS进行开发和良好的TS支持,是完全两个不同的级别
4. vue3的设计思路
虚拟dom —> 渲染器 —> 真实dom