We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
使用 vue 有段时间了,对 vue 的认识还停留在使用上,即使代码写的很 6 ,也只过是个 API 工程师,这样可是不行的呀。 遂心生看源码的念头,一是可以学习大神们的代码、编程技巧,二来也可以看看 vue 的实现原理。有点滴收获也是好的。
我看的版本是 2.6.10,是目前 (19.11) 线上的最新的版本了。 首先我们先看下 vue 源码核心的代码结构。
src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台的支持 ├── server # 服务端渲染 ├── sfc # .vue 文件解析 ├── shared # 共享代码
vue 在构建时,运行的是 npm run build 指令,实际上执行的是node scripts/build.js。
npm run build
node scripts/build.js
"build": "node scripts/build.js",
在scripts/build.js文件中:
scripts/build.js
// 读取配置文件 let builds = require("./config").getAllBuilds()
而在配置文件scripts/config.js中,主要是像下面这样的配置,有很多。
scripts/config.js
'web-runtime-cjs-dev': { entry: resolve('web/entry-runtime.js'), // 构建文件的入口 dest: resolve('dist/vue.runtime.common.dev.js'), // 构建文件的出口 format: 'cjs', // 构建出来的文件的规范 env: 'development', // 运行环境 banner },
以web-full-cjs-prod这个配置为例,它的构建初始化过程如下图所示。
web-full-cjs-prod
接下来,我们带着问题去分析下具体的源码。 比如说 Vue 是如何将模板渲染成虚拟 DOM 的? 由于我们主要是弄明白 Vue 的实现原理,所以此部分代码是精简后的,想看全部的代码可以从 GitHub 上拉取。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
使用 vue 有段时间了,对 vue 的认识还停留在使用上,即使代码写的很 6 ,也只过是个 API 工程师,这样可是不行的呀。
遂心生看源码的念头,一是可以学习大神们的代码、编程技巧,二来也可以看看 vue 的实现原理。有点滴收获也是好的。
一些准备
我看的版本是 2.6.10,是目前 (19.11) 线上的最新的版本了。
首先我们先看下 vue 源码核心的代码结构。
初始化
vue 在构建时,运行的是
npm run build
指令,实际上执行的是node scripts/build.js
。在
scripts/build.js
文件中:而在配置文件
scripts/config.js
中,主要是像下面这样的配置,有很多。以
web-full-cjs-prod
这个配置为例,它的构建初始化过程如下图所示。接下来,我们带着问题去分析下具体的源码。
比如说 Vue 是如何将模板渲染成虚拟 DOM 的?
由于我们主要是弄明白 Vue 的实现原理,所以此部分代码是精简后的,想看全部的代码可以从 GitHub 上拉取。
The text was updated successfully, but these errors were encountered: