前言

  最近全面栽进vue源码解析中,将出一系列的学习笔记 以及个人的一些总结

  1. 第一步准备工作
    1. 到GitHub上下载vue的源码(巧妇难为无米之炊)
    2. 用自己喜欢的编辑器打开源码
    3. vue主要源码資源在src文件中
    4. 放一张很流行解说vue数据响应式的图儿
  2. 第二步认识目录结构
  3. 第三步一回只理清一条线 (这次我们主要是理清new vue 实例 vue 做了哪些工作)
    1. vue 用 flow 静态类型检查(flow是如何工作的呢 可以上官网看看)
    2. vue 用 rollup 构建 (为什么不用webpack ?)
    3. 用脚手架(vue-cli)写demo (new vue 实例)
    4. 在index.js 中有定义 vue 函数(src/core/instance/index.js 源码路径)
    5. mport { initMixin } from './init'
      import { stateMixin } from './state'
      import { renderMixin } from './render'
      import { eventsMixin } from './events'
      import { lifecycleMixin } from './lifecycle'
      import { warn } from '../util/index'
      /*Github:https://github.com/answershuto*/
      function Vue (options) { //vue 函数
      if (process.env.NODE_ENV !== 'production' &&
      !(this instanceof Vue)) {
      warn('Vue is a constructor and should be called with the `new` keyword')
      }
      /*初始化*/
      this._init(options) //调用了这个函数 这个函数是定在原型上的
      } initMixin(Vue)
      stateMixin(Vue)
      eventsMixin(Vue)
      lifecycleMixin(Vue)
      renderMixin(Vue) export default Vue
    6. 初始化inti函数 定义了 _inti(src/core/instance/inti.js 源码路径)
    7. 在inti 很重要的是合并了options(你在new vue 实例传的参数)
    8. mergeOptions主要调用两个方法,resolveConstructorOptions和mergeOptions。(实例化组件还是实例化对象)
    9. 合并options 后检查 是否有el (肯定不陌生 el:'#app')
      if (vm.$options.el) {
      /*挂载组件*/
      vm.$mount(vm.$options.el)
      }
    10. 迎来很重要的函数 $mount (重点记下这个函数)
    11. 挂载后 打开浏览器页面 打开调试工具 查看dom结构
    12. 可以看到el对应的dom
    Fannie式总结
    本章的结构我觉得已经是非常的清晰了
    $mount 函数具体又做了什么?请听下回分解
    跟着我 突破vue源码坑

new vue 实例发生了什么呢?的更多相关文章

  1. 05-Vue入门系列之Vue实例详解与生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  2. Vue实例对象的数据选项

    前面的话 一般地,当模板内容较简单时,使用data选项配合表达式即可.涉及到复杂逻辑时,则需要用到methods.computed.watch等方法.本文将详细介绍Vue实例对象的数据选项 data ...

  3. Vue 实例中的生命周期钩子

    Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...

  4. vue2.0 关于Vue实例的生命周期

    什么是生命周期 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过 ...

  5. vue学习笔记(四)——Vue实例以及生命周期

    1.Vue实例API 1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM(3) |   |-------el (提供一个在页面上已存在的 DOM 元素作为 V ...

  6. Vue.js-07:第七章 - Vue 实例的生命周期

    一.前言  在之前的 Vue 学习中,我们在使用 Vue 时,都会创建一个 Vue 的实例,而每个 Vue 实例在被创建时都要经过一系列的初始化过程.例如,需要设置数据监听.编译模板.将实例挂载到 D ...

  7. vue实例的生命周期

    Vue实例的生命周期也就是这个实例从出生到死亡的过程,所以我在文档原图上把这个周期大致分为创建过程 | 运行过程 | 销毁过程三个阶段,不同结果或又分为一些小的阶段 在第一个阶段,创建阶段,会完成Vu ...

  8. 浅析vue实例的生命周期(生命周期钩子)

    “每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等” ,在不同的生命周期内会经历不同的钩子函数(生命周期 ...

  9. vue实例生命周期详解

    每个 Vue 实例在被创建之前都要经过一系列的初始化过程. 例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM . 在这个过程中,实 ...

  10. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)

    昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...

随机推荐

  1. Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)

    一.前言 采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另 ...

  2. Qt数据库应用10-通用数据库设置

    一.前言 做过了众多的项目,只要是用了数据库的项目,基本上还有一个需求就是,提供一个界面用来初始化数据库,相当于恢复出厂设置的数据,一般恢复出厂设置需要复位的是配置文件.数据库文件.布局文件这几种,其 ...

  3. Qt编写的项目作品10-本地摄像头综合应用示例

    一.功能特点 同时支持 QCamera.ffmpeg.v4l2 三种内核解析本地摄像头. 提供函数 findCamera 自动搜索环境中的所有本地摄像头设备,搜索结果信号发出. 支持自动搜索和指定设备 ...

  4. Qt编写安防视频监控系统30-GPS运动轨迹

    一.前言 此功能是一个客户定制的,主要是需要在地图上动态显示GPS的运动轨迹,有个应用场景就是一个带有监控的车子,实时在运动中,后台可以接收到经纬度信息,需要绘制对应的轨迹,相当于这些摄像机点位是动态 ...

  5. cmake错误:CMake Error: CMake can not determine linker language for target

    解决方案:因为你的library只有头文件,没有cpp文件 在add_library中增加cpp文件 同时建立一个空的cpp文件即可. 处理后的源代码结构和CMakeLists.txt内容如下所示: ...

  6. 在Android Studio中如何使用真机连接并调试App?

    前提:adb环境已经配置 手机端: 1.打开手机开发者权限,"设置" 中找到 "版本号",连续多次点击,会提示打开"开发者".我的是 &qu ...

  7. 图层级GIS数据格式概述

    图层级GIS数据格式概述 1. GEOJSON的优缺点 优点: 开放标准:GEOJSON是一个开放的标准,这意味着它可以被任何支持JSON的平台或工具使用. 易于理解和使用:由于GEOJSON基于JS ...

  8. x86平台SIMD编程入门(5):提示与技巧

    1.提示与技巧 访问内存的成本非常高,一次缓存未命中可能会耗费100~300个周期.L3缓存加载需要40~50个周期,L2缓存大约需要10个周期,即使L1缓存的访问速度也明显慢于寄存器.所以要尽量保持 ...

  9. UWP 系统通知测试

    code: using System; using System.Collections.Generic; using System.IO; using System.Linq; using Syst ...

  10. C++:typedef 与 #define 的区别

    1.执行上不同 关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能. #define 则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字 ...