如果能像调试业务代码一样调试Vue源码,这无疑是学习Vue源码最简单有效的方式。
Vue2
生成map文件
-
git clone vue 源码到本地并安装依赖
-
全局安装rollup
完成上述2步,就可以执行以下命令:
调试方式
有两种联调方式:
-
CDN
-
ESM
两种方式其实大同小异,都是生成对应的map文件。
CDN
package.json文件命令:dev,添加--sourcemap,并执行npm run dev:
rollup -w -c scripts/config.js --environment TARGET:web-full-dev --sourcemap
执行命令后会生成对应的map文件
引入生成的vue.js文件(map文件也要放入相同层级下)
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>调试Vue2源码</title>
</head>
<body>
<div id="app">
{{ message }}
</div>
</body>
<script src="../dist/vue.js"></script>
<script type="text/javascript">
let app = new Vue({
el: '#app',
data: {
message: 'Hello Vue'
}
})
</script>
</html>
ESM
这种调试方式更适合于我们,毕竟我们工程化项目基本都是通过vue-cli生成。
生成map方式也很类似,在dev:esm命令添加--sourcemap
rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm --sourcemap
然后执行npm run dev:esm,生成如下:
将生成的文件替换项目中node_modules下vue/dist对应文件。
最后一步:在vue.config.js文件新增配置:
module.exports = {
transpileDependencies: ['vue']
}
重启。重启前最好把node_modules下.cache缓存删了。
重启后如下,就可以愉快的调试Vue源码了: