vue在new的时候做了什么
-
Vue在被new的时候,主要做了以下几件事情:
-
初始化Vue实例:Vue在被new的时候会创建一个Vue实例,这个实例是Vue的根实例,它可以管理整个应用的状态。Vue会为这个实例设置一些默认的选项,例如el、data、methods等。
-
响应式数据的初始化:Vue在创建实例的时候会对data选项进行响应式处理。Vue会遍历data选项中的所有属性,使用Object.defineProperty()给每个属性添加getter和setter方法。这样当属性被读取或者修改时,Vue能够监测到并触发相应的更新。
-
编译模板:Vue在创建实例的时候会对模板进行编译。Vue的模板是以HTML的形式写在宿主页面中的,其中可能包含一些特殊的指令和表达式。Vue会将模板编译成渲染函数,这个渲染函数是Vue用来生成虚拟DOM的。
-
创建虚拟DOM:通过渲染函数,Vue会创建一个虚拟DOM树。虚拟DOM是一个JS对象,它描述了真实DOM树的结构和属性。虚拟DOM可以快速的进行比较和更新,从而提高页面的性能。
-
挂载虚拟DOM:在初始化过程中,Vue会将虚拟DOM挂载到真实的DOM上。通过调用$mount()方法,Vue将虚拟DOM转化为真实的DOM元素,并将其插入到指定的容器中。
-
完成初始化:最后,Vue会触发实例的created钩子函数,表示Vue实例已经被完全创建。在这个钩子函数中,可以进行一些初始化的操作,例如加载数据、订阅事件等。
通过以上步骤,Vue在new的时候完成了实例的初始化、响应式数据的设置、模板的编译、虚拟DOM的创建和挂载等工作,为后续的数据监听、模板渲染、组件交互等提供了基础。
1年前 -
-
在Vue中,当我们使用
new Vue()来创建一个Vue实例时,Vue会在内部进行一系列的初始化工作。下面是Vue在创建实例时做的五个主要步骤:-
执行初始化函数:Vue首先会执行一个初始化函数,这个函数用来设置Vue实例的一些初始属性、数据和方法。在这个函数中会创建Vue实例所需要的一些重要对象,比如组件选项、事件系统、数据观测等。
-
初始化数据:Vue会对Vue实例的data选项进行响应式处理。它会遍历data对象的所有属性,使用Object.defineProperty方法对每个属性进行劫持。这样一来,当数据发生变化时,Vue能够自动检测到并触发相应的更新。
-
解析模板:Vue会对Vue实例中的模板进行解析,通过编译器将模板编译成render函数。这个过程中,Vue会解析模板中的插值表达式、指令和事件等,并将它们转换成对应的VNode节点。
-
创建虚拟DOM树:通过渲染函数,Vue会生成一棵虚拟DOM树,这个树是由一系列的VNode节点组成的。虚拟DOM树是Vue用来表示页面上的结构和内容,它与实际的DOM是相对应的。
-
挂载到实际的DOM上:最后,Vue会通过调用mount方法将虚拟DOM树挂载到实际的DOM元素上,这样网页就能够显示出根据数据生成的效果了。挂载过程中,Vue会创建一个渲染器(Renderer)来将虚拟DOM树转换成实际的DOM树,并将其插入到指定的页面元素中。
总结起来,当我们使用
new Vue()时,Vue会初始化Vue实例的属性和方法,对data选项进行响应式处理,解析模板生成render函数,创建虚拟DOM树,并将其挂载到实际的DOM上。这些步骤使得Vue能够根据数据的变化,动态地更新页面的显示。1年前 -
-
当我们使用Vue进行开发时,在实例化Vue对象的时候,Vue会做一系列的初始化操作。下面是Vue在new的时候做的主要工作:
-
响应式数据的初始化:
Vue的核心思想是数据驱动,Vue会对实例中的data选项进行响应式处理。在实例化Vue对象时,Vue会对data中的数据进行劫持,并转化成响应式的getter和setter。这样当数据发生变化时,Vue能够及时地通知相关的依赖进行更新。 -
编译模板:
Vue中的模板是以HTML形式编写的,而Vue需要将模板编译成渲染函数。Vue会通过解析模板中的指令、插值表达式和事件绑定等,将其转化为真实的DOM操作。这样,在数据发生变化时,Vue能够根据渲染函数进行视图的更新。 -
创建虚拟DOM:
Vue在编译模板的过程中,会将模板转化为虚拟DOM(Virtual DOM)。虚拟DOM是一个轻量级的JavaScript对象,用来描述真实DOM的结构和属性。虚拟DOM可以高效地进行对比和更新,以减少实际DOM操作的次数,提高性能。 -
初始化生命周期钩子:
Vue实例具有生命周期,生命周期钩子函数是在不同阶段执行的回调函数。在实例化Vue对象时,Vue会初始化一些常用的生命周期钩子函数,如created、mounted等。这些钩子函数可供开发者在不同阶段执行自定义的操作。 -
注册全局组件和指令:
在实例化Vue对象时,可以通过Vue.component()和Vue.directive()等方法注册全局组件和指令。这样,在Vue实例中使用组件和指令时可以直接引用,无需额外导入。 -
初始化插件和配置:
Vue可以通过插件扩展其功能,插件通常会提供一些全局的方法、指令或组件。在实例化Vue对象时,可以使用Vue.use()方法来安装插件。同时,Vue还会初始化一些全局的配置项,如全局的递归组件缓存大小、全局的错误处理等。 -
执行挂载操作:
最后,Vue会将已编译的虚拟DOM挂载到真实的DOM上,即执行$mount方法。$mount方法将虚拟DOM渲染并插入到指定的DOM节点上,此时页面上显示出来的就是经过Vue处理的数据和视图。
综上所述,当我们使用new关键字实例化Vue对象时,Vue会进行响应式数据的初始化、模板编译、虚拟DOM的创建、生命周期钩子的初始化、全局组件和指令的注册、插件和配置的初始化,最后将虚拟DOM挂载到真实DOM上,完成Vue的初始化过程。
1年前 -