我明白了,Vue3设计与实现-vue3的设计思路读后感

简介: 第二章了解了一个框架设计的核心要素,vue在这方面表现很不错。 开发体验、框架的体积、输出的资源格式、特性的开关、错误的处理、类型支持等等,vue都有考虑。

前言

第二章了解了一个框架设计的核心要素,vue在这方面表现很不错。
开发体验、框架的体积、输出的资源格式、特性的开关、错误的处理、类型支持等等,vue都有考虑。
让我对接下来的章节更加感兴趣了,开始第三章 vue3的设计思路,很棒哇,我特别想知道,好,开始看。

声明式描述UI

通过模板来描述UI:vue中可以直接使用声明式的使用 html标签+属性+事件来创建一个带属性带事件操作的DOM元素。这种性能做过优化。

通过JS对象来描述UI:也支持你通过自定义虚拟DOM(JS对象)来创建一个带属性带事件操作的DOM元素。这种比较灵活。

vue的h函数是用来拿到虚拟DOM(js对象)的,然后通过render函数递归的渲染DOM元素或者组件。

渲染器

渲染器的作用是将虚拟dom转成真实DOM,这种转换是通过虚拟dom的结构来进行遍历,取出里面的tag、事件、children内容等等,然后通过常规的DOM操作来生成真实的DOM,并挂载到页面中。

render函数的参数 就是虚拟dom和DOM容器,也就是将虚拟DOM转成真实DOM并挂载到你传入的容器中。

组件本质

组件里面装的就是一堆DOM元素的字符串,这些字符串最终会被转成虚拟DOM,然后还是会用到renderer函数去转成真实的DOM。

虚拟dom的tag如果是普通标签就会使用mountElement来转成真实dom并且挂载。

虚拟dom的tag如果是函数,那么就代表它是个组件,那么就会使用mountComponent,里面的renderer函数来转成真实dom并且挂载。

虚拟dom的tag如果是对象,那么也可以代表它是个组件,那么就会调用这个对象的render函数来获取虚拟dom,然后再使用renderer函数来转成真实dom并且挂载。

组件的tag可以有多种表达形式,函数、对象都行。有状态的组件采用的是对象结构来表达的。

模板工作原理

编译器将html模板转成生成虚拟dom的函数,然后再由虚拟dom转成真实dom并挂载。

各个模块组成的有机整体

渲染器将虚拟dom转成真实dom。

编译器将模板转成生成虚拟dom的函数,不仅如此,编译器可以给虚拟dom打上标记,从而可以通过知道那些虚拟dom会发生变化,哪些虚拟dom不会发生变化,也就是静态和动态之分,从而让渲染器更快的找到要更新的DOM元素,更新的效率就更高了。

总结

vue采用模板来描述UI,编译器会将模板转成生成虚拟dom的函数,并且对dom进行标记,最终使用渲染器来将虚拟dom转成真实dom并挂载到页面中。

渲染器中的使用的是常规的dom操作,通过虚拟dom递归的创建dom并挂载。

编译器和渲染器都是vue的核心组成部分,它们互相配合,形成一个有机整体,从而进一步提升框架性能。

目录
相关文章
|
4天前
|
JavaScript 前端开发
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
本文介绍了在Vue2或Vue3项目中如何使用Isotope(同位素)布局库来创建动态的网格布局,并提供了详细的代码实现和效果展示,包括过滤和排序功能。
10 0
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
|
4天前
|
前端开发 JavaScript API
基于Vue3+Hooks实现4位随机数和60秒倒计时
本文介绍了如何在Vue3中使用Hooks API来实现生成4位随机数和执行60秒倒计时的功能,并提供了详细的代码示例和运行效果展示。
21 1
基于Vue3+Hooks实现4位随机数和60秒倒计时
|
4天前
|
数据可视化 JavaScript
Vue3项目使用G6可视化组件实现一个树形机构图
在Vue 3项目中使用G6可视化组件库实现树形机构图的构建和展示。
29 1
Vue3项目使用G6可视化组件实现一个树形机构图
|
3天前
|
JavaScript 算法 API
Vue 3有哪些新特性
【8月更文挑战第16天】Vue 3有哪些新特性
15 1
|
4天前
|
JavaScript UED
如何在Vue3项目中使用防抖节流技巧
在Vue 3项目中使用防抖和节流技巧以优化组件性能,包括使用`lodash`库和自定义实现这两种方法。
7 0
如何在Vue3项目中使用防抖节流技巧
|
4天前
|
前端开发 JavaScript
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
本文介绍了如何在Vue3项目中实现一个鼠标拖动调整元素宽度的功能,并展示了点击按钮收起或展开侧边栏的效果,提供了完整的实现代码和操作演示。
36 0
基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
|
3天前
|
JavaScript
创建 Vue3 项目
创建 Vue3 项目
9 0
|
4天前
|
JavaScript
在Vue3+ElementPlus项目中使用具有懒加载的el-tree树形控件
在Vue 3和Element Plus项目中实现具有懒加载功能的el-tree树形控件,以优化大数据量时的页面性能。
6 0
|
4天前
|
JavaScript 前端开发
在Vue3+ElementPlus项目中实现一个简单的新增/移除行记录的小组件
在Vue 3和Element Plus项目中创建一个支持新增和移除行记录的简单表格组件。
23 0
|
4天前
在Vue3项目中使用 vue3-seamless-scroll 无缝滚动插件
本文介绍了如何在Vue3项目中使用`vue3-seamless-scroll`插件实现无缝滚动效果,并提供了详细的示例代码和运行效果。
53 0