vue2源码学习 — new Vue()
vue2源码学习 — new Vue()
参考:https://blog.csdn.net/qq_36782473/article/details/109108477
调试环境
获取vue源码
项目地址:https://github.com/vuejs/vue
调试环境搭建
- 安装依赖:
npm i
- 安装rollup:
npm i -g rollup
- 修改package.json总的dev脚本,添加sourcemap
"dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web- full-dev
- 运行开发命令:
npm run dev
目录结构说明
项目运行入口文件
从pageage.json开始看起
- 根据package.json文件的dev配置项,找到 scripts/config.js 中的 web-full-dev
"dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web-full-dev",
'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
},
- web/entry-runtime-with-compiler.js是项目打包的入口文件,web是别名,找到真实路径。 resolve方法:
const aliases = require('./alias')
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)
}
}
- 打开scripts/alias.js, 找到web对应的路径:src/platforms/web
module.exports = {
vue: resolve('src/platforms/web/entry-runtime-with-compiler'),
compiler: resolve('src/compiler'),
core: resolve('src/core'),
shared: resolve('src/shared'),
web: resolve('src/platforms/web'),
weex: resolve('src/platforms/weex'),
server: resolve('src/server'),
sfc: resolve('src/sfc')
}
- 根据
path.resolve(aliases[base], p.slice(base.length + 1))
可以得出真实路径是:
src/platforms/web/entry-runtime-with-compiler.js
注意:此文件是带编译器的版本,是为了方便我们更清晰的了解整个Vue工作机制。在我们日常工作中使用的webpack是不带编译器的版本,而是通过额外注入的vue-loader实现的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了