前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • Vue

    • 从源码解读Vue生命周期
    • 组件的本质
    • 有状态组件的设计
    • 设计 VNode
    • 辅助创建 VNode 的 h 函数
    • 自定义渲染器和异步渲染
    • 渲染器之挂载
    • 渲染器的核心 Diff 算法
    • 渲染器之patch
    • 图解 Vue 响应式原理
    • 图解 Vue 异步更新
    • 剖析 Vue 内部运行机制
    • vue响应式原理模拟
    • vue状态管理之vuex
    • 理解Vue的设计思想及实现Vue
    • diff算法深入
    • vue router vuex原理分析
    • Vue3初探响应式原理.
    • vue2源码分析
      • 文件结构
      • 调试环境搭建
      • 入口
      • 初始化流程
      • 数据响应式
      • 数组响应化
      • 异步更新队列
        • 概念解释
        • vue中的具体实现
      • 虚拟DOM
        • 概念
        • 体验虚拟DOM
        • 优点
        • 必要性
        • 整体流程
      • patch获取
        • patch实现
      • 模板编译
        • 模板编译必要性
        • 体验模板编译
        • 整体流程
        • 模板编译过程
      • 典型指令的实现:v-if、v-for
      • 组件化机制
        • 组件声明:Vue.component()
        • 组件实例创建及挂载
        • 整体流程
        • 创建组件VNode
        • 创建组件实例
      • 总结
    • vue组件化实践
  • React

  • Webpack

  • Node

  • Javascript

  • 综合

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 文件结构

源码目录

# 调试环境搭建

  • 安装依赖: npm i
  • 安装rollup: npm i -g rollup
  • 修改dev脚本,添加sourcemap,package.json
 "dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web- full-dev",
@前端进阶之旅: 代码已经复制到剪贴板
  • 运行开发命令: npm run dev
  • 引入前面创建的vue.js,samples/commits/index.html
<script src="../../dist/vue.js"></script>
@前端进阶之旅: 代码已经复制到剪贴板

术语解释:

  • runtime:仅包含运行时,不包含编译器
  • common:cjs规范,用于webpack1
  • esm:ES模块,用于webpack2+
  • umd: universal module definition,兼容cjs和amd,用于浏览器

# 入口

dev脚本中 -c scripts/config.js 指明配置文件所在

参数 TARGET:web-full-dev 指明输出文件配置项

// Runtime+compiler development build (Browser)
{
  'web-full-dev': {
    entry: resolve('web/entry-runtime-with-compiler.js'),
    // 入口 dest: resolve('dist/vue.js'),// 目标文件
    format: 'umd',
    // 输出规范
    env: 'development',
    alias: {
      he: './entity-decoder'
    },
    banner,
  },
}
@前端进阶之旅: 代码已经复制到剪贴板

# 初始化流程

  1. 入口 platforms/web/entry-runtime-with-compiler.js

扩展默认$mount方法:处理template或el选项

  1. platforms/web/runtime/index.js
  • 安装web平台特有指令和组件
  • 定义__patch__:补丁函数,执行patching算法进行更新
  • 定义$mount:挂载vue实例到指定宿主元素(获得dom并替换宿主元素)
  1. core/index.js

初始化全局api 具体如下:

 
Vue.set = set
Vue.delete = del
Vue.nextTick = nextTick

initUse(Vue) // 实现Vue.use函数
initMixin(Vue) 
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • Vue

    • 从源码解读Vue生命周期
    • 组件的本质
    • 有状态组件的设计
    • 设计 VNode
    • 辅助创建 VNode 的 h 函数
    • 自定义渲染器和异步渲染
    • 渲染器之挂载
    • 渲染器的核心 Diff 算法
    • 渲染器之patch
    • 图解 Vue 响应式原理
    • 图解 Vue 异步更新
    • 剖析 Vue 内部运行机制
    • vue响应式原理模拟
    • vue状态管理之vuex
    • 理解Vue的设计思想及实现Vue
    • diff算法深入
    • vue router vuex原理分析
    • Vue3初探响应式原理.
    • vue2源码分析
      • 文件结构
      • 调试环境搭建
      • 入口
      • 初始化流程
      • 数据响应式
      • 数组响应化
      • 异步更新队列
        • 概念解释
        • vue中的具体实现
      • 虚拟DOM
        • 概念
        • 体验虚拟DOM
        • 优点
        • 必要性
        • 整体流程
      • patch获取
        • patch实现
      • 模板编译
        • 模板编译必要性
        • 体验模板编译
        • 整体流程
        • 模板编译过程
      • 典型指令的实现:v-if、v-for
      • 组件化机制
        • 组件声明:Vue.component()
        • 组件实例创建及挂载
        • 整体流程
        • 创建组件VNode
        • 创建组件实例
      • 总结
    • vue组件化实践
  • React

  • Webpack

  • Node

  • Javascript

  • 综合