首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

再聊 Vue.js 3.2 关于 vnode 部分的优化

什么是 vnode vnode 本质上是用来描述 DOM 的 JavaScript 对象,它在 Vue.js 中可以描述不同类型的节点,比如普通元素节点、组件节点等。...另外,Vue.js 3.x 内部还针对 vnode 的 type,做了更详尽的分类,包括 Suspense、Teleport 等,并且把 vnode 的类型信息做了编码,以便在后面 vnode的挂载阶段...我们知道,组件模板经过编译,会生成对应的 render 函数,在 render 函数内部,会执行 createVNode 函数创建 vnode 对象,我们来看一下 Vue.js 3.2 之前它的实现:...顺着这个思路,就可以在模板编译阶段,针对普通元素节点,使用新的函数来创建 vnodeVue.js 3.2 就是这么做的,举个例子: ...其实对一个框架越了解,你就会越有敬畏之情,Vue.js 在编译、运行时的实现都下了非常大的功夫,处理的细节很多,因此代码的体积也难免变大。

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

【Vue原理】VNode - 源码版

- 源码版 今天就来探索 VNode 的源码,VNode 是 Vue2 渲染机制中很重要的一部分,是深入Vue 必须了解的部分 我们以4个问题来开始我们的探索 1、vnode 是什么及其作用 2...、vnode 什么时候生成 3、vnode 怎么生成 4、vnode 存放什么信息 5、vnode 存放在哪里 文章很长,看之前值做好准备 [公众号] --- VNode是什么及作用 首先,第一个问题已经很烂了...此时就需要生成 VNode,才能根据 VNode 生成 DOM 然后挂载 挂载 DOM 第一步,就是先执行渲染函数,得到整个模板的 VNode 比如有以下渲染函数,执行会返回 VNode,就是 _c 返回的...} --- VNode存放在哪里 那么创建出来的 VNode 是否有被存起来,毫无疑问,肯定是要的啊 主要是三个位置存了 vnode,分别是 parent ,_vnode ,$vnode parent...DOM并挂载 } } 2、$vnode $vnode 只有组件实例才有,因为 $vnode 存放的是外壳节点,页面实例中是不存在 $vnode 的 本来也想走下流程的,无奈兜兜转转太多,涉及源码更多

2.7K20

Vue.js 2.0源码解析之前端渲染篇

一、前言 Vue.js框架是目前比较火的MVVM框架之一,简单易上手的学习曲线,友好的官方文档,配套的构建工具,让Vue.js在2016大放异彩,大有赶超React之势。...本文是系列文章,主要想通过对于Vue.js 2.0源码的分析,从代码层面解析Vue.js的实现原理,帮助读者能够更深入地理解整个框架的思想。此篇文章主要介绍前端渲染部分。...VNode就是Vue.js 2.0中的Virtual DOM,在Vue.js 2.0中,相较Vue.js 1.0引入了Virtual DOM的概念,这也是Vue.js 2.0性能提升的一大关键。...Javascript模拟DOM模型树 在Vue.js 2.0中Javascript模拟DOM模型树就是VNode,Render函数执行后都会返回VNode对象,为下一步操作做准备。...在Vue.js 2.0中,是通过/src/core/vdom/patch.js中的patch(oldVnode, vnode ,hydrating)方法来完成的。

10.3K00

Vue.js】1711- 深入浅出 Vue3 自定义指令

Vue.js[1] 提供了丰富的指令来简化开发者的工作。除了内置指令外,Vue.js 还支持自定义指令,开发者可以根据自己的需求扩展 Vue.js 的指令库。...Vue.js 3.x 相较于 Vue.js 2.x 在自定义指令方面进行了一些改进,本文将介绍 Vue.js 3.x 中自定义指令的使用方法。 ❓ 什么是自定义指令 1....vnode:代表绑定元素的底层 VNode。 prevNode:之前的渲染中代表指令所绑定元素的 VNode。仅在 beforeUpdate 和 updated 钩子中可用。...自定义指令是 Vue.js 框架的一个非常重要的扩展,开发者可以根据自己的需求自定义指令来简化开发工作、提高开发效率。 希望本文对您学习 Vue.js 自定义指令有所帮助。...学习资料 以下是一些我个人认为不错 Vue3 自定义指令的学习资料: Vue.js 官方文档:自定义指令[4] Vue.js 官方文档是学习 Vue.js 自定义指令的最佳入门资料,其中包括了自定义指令的定义

38020

Vue.js的设计思路

这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情 前言 今天是学习学习理解《Vue.js设计与实现》的第三篇,第一章到此结束 第一章三篇主要宏观得介绍了框架的设计思路和纲领,首先介绍前端框架中关于命令式...,声明式,虚拟dom,运行时和编译时的权衡理念,然后介绍了前端框架设计需要考虑的因素,比如体积,开发体验,特性开关,错误处理等,最后介绍Vue.js在这些理念中做了哪些设计和权衡。...详细情况可以查看专栏学习理解《Vue.js设计与实现》 声明式地描述UI Vue是一个声明式的UI框架。前端页面包括,DOM元素,属性,事件,元素的层级结构。...也就是我们常写的 Vue.js使用与HTML标签一样的方式来描述DOM, 使用与HTML标签一样的方式来描述属性, 使用:或v-bind来描述动态绑定的属性, 使用@或者v-on来描述事件...其实我们在vue.js组件中手写的渲染函数就是使用虚拟DOM来描述UI的。

1.2K10

vue面试题八股文简答大全 让你更加轻松的回答面试官的vue面试题

每次数据发生变化时,Vue.js会计算需要更新的最小DOM子树,然后只更新这些部分。这种方法比直接操作真实DOM要快得多。在Vue.js中,虚拟DOM由VNode类来表示。...VNode类有一些属性:tag、data、children等。VNode实例通常通过createElement()方法创建,该方法返回一个VNode实例。...此时我们就需要先根据真实dom生成虚拟dom, 当虚拟dom某个节点的数据改变后会生成有一个新的Vnode, 然后新的Vnode和旧的Vnode作比较,发现有不一样的地方就直接修改在真实DOM上,然后使旧的...Vnode的值为新的Vnode。...在patch方法中,首先进行树级别的比较 new Vnode不存在就删除 old Vnodeold Vnode 不存在就增加新的Vnode 都存在就执行diff更新 当确定需要执行diff算法时,比较两个

2.6K51

Vue源码学习和分析笔记

platform Vue.js 是一个跨平台的 MVVM 框架,它可以跑在 web 上,也可以配合 weex 跑在 native 客户端上。...platform 是 Vue.js 的入口,2 个目录代表 2 个主要入口,分别打包成运行在 web 上和 weex 上的 Vue.js。...server Vue.js 2.0 支持了服务端渲染,所有服务端渲染相关的逻辑都在这个目录下。注意:这部分代码是跑在服务端的 Node.js,不要和跑在浏览器端的 Vue.js 混为一谈。...shared Vue.js 会定义一些工具方法,这里定义的工具方法都是会被浏览器端的 Vue.js 和服务端的 Vue.js 所共享的。...createElement是怎么实现的 方法入口 Vue.js通过文件 src/core/vdom/create-element.js 来创建VNode元素: // src/core/vdom/create-element.js

1.2K21

vnode 到真实 DOM 是如何转变的?

何为vnode vnode 本质上是用来描述 DOM 的 JavaScript 对象,它在 Vue.js 中可以描述不同类型的节点,比如普通元素节点、组件节点等。...所以,从表现上来看,组件的模板决定了组件生成的 DOM 标签,而在 Vue.js 内部,一个组件想要真正的渲染生成 DOM,还需要经历“创建 vnode - 渲染 vnode - 生成 DOM” 这几个步骤...rootProps) // 渲染 vnode render(vnode, rootContainer, isSVG); } 复制代码 创建 vnode vnode 是通过 函数 createVNode...我们现在拥有了这个 vnode 对象,接下来要做的事情就是把它渲染到页面中去。 渲染 vnode 接下来,是渲染 vnode 的过程。...,把这个 vnode 再经过内部一层标准化,就得到了该函数的返回结果:子树vnode

81000

Vue.js 内部原理浅析

于我来说 Vue.js 最吸引人的地方在于 -- 其学习曲线,非常之低。个人角度来讲,我感觉就像正在做着 jQuery 一类的事情。鼓捣几天之后,你就能开始建立应用了。...一年前我开始探索 Vue.js 并建立了一些应用。但是几天前,一股深入了解 Vue.js 代码的渴望在我心中升腾。我翻阅了 Github 上的源码并进行了多轮调试以了解其底层运行机制。...所以,让我们来点干货,本文将尝试给你如下 4 个问题的答案: 当你创建一个 Vue.js 实例时发生了什么? 模板内部都在发生着什么? Virtual DOM 有何意义?...Vue.js 在内部使用了 snabbdom 库。所以,让我们看看 patch 过程中到底发生了什么。 整个过程就是个关于两相对比新旧 VNode (Virtual DOM Node) 的游戏。...其算法将以如下方式运行 -- 首先检查旧 VNode 是否存在,若不存在则为每个 VNode 创建 DOM 元素。当你首次登录到应用中并且第一次渲染过程初始化时,就是旧 VNode 不存在的时候。

1.2K10

揭秘Vue中的Virtual Dom

前言 Vue.js 2.0引入Virtual DOM,比Vue.js 1.0的初始渲染速度提升了2-4倍,并大大降低了内存消耗。那么,什么是Virtual DOM?为什么需要Virtual DOM?...模板转换成视图的过程 在正式介绍 Virtual Dom之前,我们有必要先了解下模板转换成视图的过程整个过程(如下图): Vue.js通过编译将template 模板转换成渲染函数(render ) ,...其实虚拟DOM在Vue.js主要做了两件事: 提供与真实DOM节点所对应的虚拟节点vnode 将虚拟节点vnode和旧虚拟节点oldVnode进行对比,然后更新视图 为何需要Virtual DOM?...patch(vnode,newVnode):再次渲染的时候,将新的vnode和旧的vnode相对比,然后之间差异应用到所构建的真正的DOM树上。...1.patch(container,vnode) 通过这个函数可以让VNode渲染成真正的DOM,我们通过以下模拟代码,可以了解大致过程: function createElement(vnode) {

1K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券