分析vue2.6.12源码

一、调试环境搭建

1.拉取源码

git clone https://github.com/vuejs/vue.git

2.全局安装rollup:vue打包用rollup,开发时打包用webpack

npm i -g rollup

3.安装依赖

npm i

 4.在package.json中scripts.dev中添加--sourcemap,用于调试代码时查找源码

"dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web-full-dev",

5.打包:

npm run dev

如果这里报错:

是因为rollup-plugin-alias对windows的兼容不好,重新下载rollup-plugin-alias覆盖node_modules/rollup-plugin-alias

npm i rollup-plugin-alias

进入rollup-plugin-alias文件夹,安装依赖并打包:

cd node_modules/rollup-plugin-alias
npm i
npm run build

会退到vue文件夹,重新打包

cd ..
cd ..
npm run build

 打包出现:

6.查看是否打包成功:如果dist文件夹中出现新的文件vue.js.map(sourcemap生成的文件),则打包成功

 

二、源码目录

1.源码目录


 

2.dist文件夹:

3.src/core目录(核心代码):

 

三、查找打包入口文件

1.根据package.json中scripts.dev

"dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web-full-dev",

找到打包入口文件scripts/comfig.js,生成web平台的全版本的开发版本

打开scripts/comfig.js,找到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
  },

入口文件:resolve('web/entry-runtime-with-compiler.js')

对应的resolve方法:

const resolve = p => {
  const base = p.split('/')[0]
  if (aliases[base]) {
    return path.resolve(aliases[base], p.slice(base.length + 1))
  } else {
    return path.resolve(__dirname, '../', p)
  }
}

根据alias.js文件找到web对应的路径:

web: resolve('src/platforms/web'),

所以入口文件的绝对路径为 src/platforms/web/entry-runtime-with-compiler.js

 

四、new Vue()中做了什么(初始化流程)

1.根据src/platforms/web/entry-runtime-with-compiler.js文件,

该文件扩展$mount:处理el或者template参数,el会转化为template,template会转为render函数。

new Vue时传入的渲染参数中,render的优先级最高,template次之,最后是el

// 渲染render
var vue = new Vue({
  el: "#app",
  template: "<div>template</div>",
  render(h) {
    return h("p", "render");
  },
  data: {
    msg: "test vue"
  }
});

2.通过上面文件,找到该文件使用的vue的地址:src/platforms/web/runtime/index,实现patch函数和$mount函数。

3.通过上面文件,找到该文件使用的vue的地址:src/core/index,初始化全局API:Vue.$set/delete/use/component...。

4.通过上面文件,找到该文件使用的vue的地址:src/instance/index,Vue构造函数声明,实现vue的实例方法和属性。

5.查看上面文件中的initMixin(Vue),文件地址为:src/instance/init,合并用户参数和原本参数,进行初始化

    // vue的初始化过程
    vm._self = vm;
    // 初始化生命周期相关属性
    initLifecycle(vm);
    // 监听自定义事件。vm._events改变
    initEvents(vm);
    // 插槽解析,声明_c()和$createElement()
    initRender(vm);
    callHook(vm, "beforeCreate");
    initInjections(vm); // resolve injections before data/props
    // 初始化组件各种状态:props,methods,data,
    initState(vm);
    initProvide(vm); // resolve provide after data/props
    callHook(vm, "created");

new Vue()都做了什么?

_init():

  • 组件实例初始化属性,比如$children
  • 处理自定义事件
  • 处理插槽信息
  • 最重要是组件状态初始化、响应式等事情
  • 两个生命周期钩子调用

 

 

 

 

 

 

 

### 回答1: vue 2.6.12Vue.js的一个版本,可以在Vue.js官方网站上进行下载。在下载之前,需要确认下载的版本是否适合自己的项目需求以及是否与项目中已有的Vue版本兼容。下载并解压缩后,在HTML文件中引入Vue.js文件即可使用Vue框架。Vue 2.6.12版本提供了许多新的特性和功能,例如增加了对浏览器环境的支持、修复了已知的漏洞和错误、改进了性能和稳定性等等。在使用Vue 2.6.12版本开发项目时,建议仔细阅读官方文档,以便更好地理解和运用这个版本的新特性和功能,从而提高项目的开发效率和质量。同时,也可以通过Vue社区和论坛等渠道获取技术支持和帮助,以便更好地解决在使用过程中出现的问题和挑战。 ### 回答2: Vue 2.6.12是一款流行的JavaScript框架,用于构建现代化的Web应用程序。如需下载Vue 2.6.12,请遵循以下步骤。 首先,打开Vue官方网站(https://vuejs.org/)并转至“下载”页面。找到Vue 2.6.12的版本,并选择需要的构建方式,包括完整版、运行时版或只包含编译器的版本。完整版包含所有功能,运行时版只包括必需的运行时代码,而编译器版本则仅用于开发环境中。 然后,您可以选择将Vue 2.6.12下载到本地计算机上,或通过CDN从Web上引用它。如果选择下载到本地计算机上,请单击下载链接,并保存文件到您计算机上的目标文件夹中。 最后,您可以通过将Vue 2.6.12的脚本标记添加到您的HTML文档中,来引用它。如果您使用脚手架工具(例如Vue CLI)来创建Vue项目,则可以在项目中安装并引用Vue,而不需要手动下载它。 总之,Vue 2.6.12是一款功能丰富的JavaScript框架,可帮助您构建高性能的Web应用程序。您可以从Vue官方网站下载它,并根据需要选择不同的构建方式。 ### 回答3: Vue是一种轻量级的JavaScript框架,它具有简单易用、易学易懂、可扩展、高效等特点。Vue 2.6.12Vue的一个版本,如果你想学习和使用Vue框架,你可以下载Vue 2.6.12。你可以通过访问Vue官方网站下载Vue 2.6.12,也可以从其他网站下载该版本。如果你使用的是npm包管理器,你可以通过命令行来下载和安装Vue 2.6.12。在命令行中输入"npm install vue@2.6.12"即可下载和安装该版本的Vue框架。下载完后,你需要在你的项目中引入Vue 2.6.12。可以使用script标签将Vue.js文件链接到你的HTML文件中,也可以使用webpack等构建工具将Vue.js文件打包并引入到你的项目中。在引入Vue 2.6.12后,你就可以开始使用Vue框架了。Vue 2.6.12中包含很多常用的组件和指令,你可以通过Vue文档来学习和使用它们。同时也可以通过谷歌、百度等搜索引擎来寻找Vue相关的教程和资源。总之,Vue框架是一个非常优秀的JavaScript框架,它可以帮助你快速地构建现代化的Web应用程序,如果你想了解和学习Vue框架,就可以下载Vue 2.6.12并开始你的Vue之旅。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值