vue2初始化过程

news/2025/10/13 15:41:19/文章来源:https://www.cnblogs.com/amulong1237/p/19138613

Vue2 的初始化过程主要包括以下几个核心步骤:

1. 初始化流程概述

// Vue 构造函数
function Vue(options) {this._init(options)
}

2. 初始化阶段

2.1 _init() 方法

Vue.prototype._init = function(options) {const vm = this// 合并配置if (options && options._isComponent) {// 组件配置合并initInternalComponent(vm, options)} else {vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor),options || {},vm)}// 初始化生命周期、事件、渲染等initLifecycle(vm)        // 初始化生命周期initEvents(vm)           // 初始化事件initRender(vm)           // 初始化渲染callHook(vm, 'beforeCreate') // 调用 beforeCreate 钩子initInjections(vm)       // 初始化注入initState(vm)            // 初始化状态(核心)initProvide(vm)          // 初始化提供callHook(vm, 'created')  // 调用 created 钩子// 挂载if (vm.$options.el) {vm.$mount(vm.$options.el)}
}

2.2 初始化状态 (initState)

function initState(vm) {vm._watchers = []const opts = vm.$optionsif (opts.props) initProps(vm, opts.props)if (opts.methods) initMethods(vm, opts.methods)if (opts.data) {initData(vm)           // 初始化 data,进行响应式处理} else {observe(vm._data = {}, true)}if (opts.computed) initComputed(vm, opts.computed)if (opts.watch) initWatch(vm, opts.watch)
}

2.3 响应式系统初始化

function initData(vm) {let data = vm.$options.datadata = vm._data = typeof data === 'function' ? getData(data, vm) : data || {}// 代理 data 到 vm 实例上const keys = Object.keys(data)let i = keys.lengthwhile (i--) {proxy(vm, '_data', keys[i])}// 观察数据observe(data, true)
}

3. 挂载阶段

3.1 $mount 方法

Vue.prototype.$mount = function(el, hydrating) {el = el && query(el)const options = this.$options// 解析 template/el 为 render 函数if (!options.render) {let template = options.templateif (template) {// 编译模板const { render, staticRenderFns } = compileToFunctions(template,{...})options.render = renderoptions.staticRenderFns = staticRenderFns}}return mount.call(this, el, hydrating)
}

4. 完整的初始化流程总结

  1. 合并配置:合并构造函数选项和实例选项
  2. 初始化生命周期:建立组件关系,初始化 $parent、$children 等
  3. 初始化事件:处理父组件传递的事件
  4. 初始化渲染:创建 $slots、$scopedSlots,定义 $createElement
  5. 调用 beforeCreate 钩子
  6. 初始化注入:处理 inject 选项
  7. 初始化状态(核心步骤):
    • 初始化 props
    • 初始化 methods
    • 初始化 data(响应式处理)
    • 初始化 computed
    • 初始化 watch
  8. 初始化提供:处理 provide 选项
  9. 调用 created 钩子
  10. 挂载:如果存在 el 选项,自动调用 $mount 方法

这个过程建立了 Vue 实例的响应式系统,为后续的数据变化侦测和视图更新奠定了基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Doris/函数] Doris 之数据查询

概述: Doris 之数据查询 函数篇 GET_JSON_STRING 函数 : JSON 字段提取推荐文献GET_JSON_STRING 函数 - Doris/SQL函数GET_JSON_STRING 是 Apache Doris 提供的一个内置函数用于从 JSON 文本中提取指定路径的字段值,并…

如何用AI绘制程序时序图

1:给AI描述你的程序逻辑,并让他生成一段Mermaid代码 2:将Mermaid代码贴到Mermaid(https://mermaid.live) 3:然后进行细节的调整与编辑即可 ​ ->> :实线,表示“请求 / 调用” ​ -->> :虚线,…

LLVM 后端支持 RISCV 矩阵扩展都有哪些方式

LLVM 后端支持 RISCV 矩阵扩展都有哪些方式 LLVM后端对RISC-V矩阵扩展(RVV,通常为v1.0)的支持是一个多层次、多方式的生态系统。下面我将详细列举并举例说明所有主要方式。 总的来说,支持方式可以分为三大类,其与…

upload的典型案例demo

upload的典型案例demoimport React, { useState } from react; import { Upload, Button, message, List } from antd; import { UploadOutlined } from @ant-design/icons;interface CustomFile {uid: string;name: s…

# 这个函数对i1进行正则拆分, 返回列表. 跟re.split区别是他保留分隔符.

# 这个函数对i1进行正则拆分, 返回列表. 跟re.split区别是他保留分隔符.import re # 这个函数对i1进行正则拆分, 返回列表. 跟re.split区别是他保留分隔符. def resplit(repl, i1): # i1:strpreclean2=[]matches=[]for…

简单聊聊数据可视化大屏制作的前端设计与后端开发

一、概述 数据可视化大屏的制作可分为前端与后端两个部分。前端主要工作是UI设计、数据展示、交互设计等,帮助使用者快速获取所需信息,直观了解数据含义。后端主要工作是数据接入、数据处理、项目部署等,为前端展示…

详细介绍:PPT auto Crorrector

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

[THUWC 2018] 字胡串

只需要使用 Z 函数的单 $\log$ 解法,不依赖于字符集大小。只需要使用 Z 函数的单 \(\log\) 解法,不依赖于字符集大小。 考虑固定 \(B\),比较从 \(x, y\) 插入谁更优(\(x < y\))。删除掉公共的前后缀可知等价于…

2025 年钢结构厂家推荐榜:箱型H型/厂房仓库/电厂/桥梁/农牧业/锅炉/场馆/高层框架/装配式钢结构工厂,聚焦安全与品质,助力建筑项目精准选品

随着装配式建筑政策推进、工业升级及大型基建项目增多,钢结构凭借抗震性强、施工效率高、绿色环保等优势,已成为建筑领域核心材料之一,2025 年市场规模预计持续扩容。但市场增长也带来厂商资质参差、技术能力不一的…

老版本 EasyExcel 一个神出鬼没的异常 - 教程

老版本 EasyExcel 一个神出鬼没的异常 - 教程2025-10-13 15:25 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

2025 年粮库空调厂家最新推荐榜:聚焦技术创新与实用适配,助力粮库精准选购优质设备粮库空调一体机/粮库空调机组/碳钢喷塑粮库空调/低温粮库空调厂家推荐

引言粮食储备安全关乎国计民生,而粮库空调作为保障粮食品质、减少存储损耗的核心设备,其性能优劣直接影响粮食存储效果。当前市场上粮库空调厂家数量繁杂,产品质量、技术水平与服务能力差异显著,部分产品存在温湿度…

2025 年最新推荐!泳池除湿热泵厂家推荐榜单重磅发布,全方位解析优质厂家实力助您选对设备双模式/多功能/三集一体/全直流变频/室内/变频式泳池除湿热泵厂家推荐

引言 随着室内泳池的普及,泳池环境温湿度控制成为关键难题。高湿度不仅影响游泳者舒适度,还会损害建筑结构、滋生霉菌,传统设备能耗高且控温除湿效果差。如今市场上泳池除湿热泵品牌杂乱,产品质量、技术水平参差不…

django template filter safe escapejs json_script等

========safe==============|safe 可以当作html的tag渲染 ====in view: context[user_content1]="<b>Hello</b>"context[user_content2]="<b>Hello</b>"return render(re…

2025年GEO(AI搜索优化)厂家口碑推荐排行榜

摘要 随着人工智能技术的飞速发展,GEO(AI搜索优化)行业在2025年迎来爆发式增长,企业纷纷寻求高效、低成本的AI搜索优化解决方案以提升数字营销效果。本文基于用户搜索数据和行业调研,为您推荐2025年口碑最佳的GEO…

2025年GEO(AI搜索优化)源头厂家权威推荐榜单:云视有客科技领跑行业新纪元

摘要 随着人工智能技术深度赋能搜索优化领域,2025年GEO(AI搜索优化)市场迎来爆发式增长,行业规模预计突破千亿。本文基于技术参数、服务效能和用户口碑三维度评估,为您权威解析国内优质GEO源头厂家,其中云视有客…

2025年GEO服务商口碑推荐榜单:顶尖AI搜索优化厂家全方位解析

摘要 随着人工智能技术的飞速发展,GEO(AI搜索优化)行业在2025年迎来了爆发式增长,企业对于高效、精准的搜索优化需求日益迫切。本文基于市场调研和用户反馈,为您推荐2025年口碑最佳的GEO服务商,并提供详细排行榜…

2025年GEO(AI搜索优化)厂家口碑推荐榜:云视有客科技领跑行业创新

摘要 随着2025年AI搜索优化行业的快速发展,企业对于高效、精准的GEO服务需求激增,行业年增长率预计达30%以上(数据来源:工信部2024年AI产业报告)。本文基于用户搜索意图,提供2025年GEO厂家口碑排行榜单,并附上详…

2025企业聊天软件排行 5款好用的通讯软件推荐

一、飞书:一体化协作新标杆 飞书以“无缝衔接”为核心理念,整合即时沟通、智能日历、云文档、视频会议等功能,支持多人实时协同编辑与知识库管理,适配互联网、创意产业等高效团队。 特点优势智能文档协同:云文档支…

【触想智能】工业安卓一体机在人工智能领域上的市场应用分析

工业安卓一体机在人工智能(AI)领域上具有广泛的市场应用潜力。工业安卓一体机是指集成了安卓操作系统的硬件设备,具备强大的计算和数据处理能力,适用于各种工业环境。触想工业安卓一体机TPC-A2系列以下是关于工业安卓…

Redis中的线程模型 - 浪矢

目录什么是Redis?Redis性能优秀的原因1 内存数据库2 高效的I/O模型3 简洁高效的通信协议 (Simple Protocol - RESP)Redis的线程模型 什么是Redis? Redis是NoSQL的数据库,数据保存在内存中(支持RDB,AOF),因此读写…