资源
各种进阶资源 + 联系方式请看下方链接
资源
package.json
- 执行npm run dev 的时候在 rollup 后面传入了 scripts/config.js配置文件
- TARGET 后面的值是打包的版本,web是代表web平台下,full是完整版,dev开发版不对代码进行压缩
scripts/config.js
- config.js是一个基于node的模块,所以看这块的代码需要对node有所了解。某块的话一般会在末尾导出成员,看下代码看在末尾导出了哪些成员
if (process.env.TARGET) { module.exports = genConfig(process.env.TARGET) } else { exports.getBuild = genConfig exports.getAllBuilds = () => Object.keys(builds).map(genConfig) }
- 可以看到当执行npm run dev的时候是有TARGET参数的,那么就会执行
genConfig(process.env.TARGET)
这个函数。 - genConfig函数中首先有这样一句代码
const opts = builds[name]
这个builds是写好的一个配置文件,可根据传入的TARGET的值来获取对应的一个配置。可以看到获取的配置如下
- 所以npm run dev的时候entry(入口)是src/platforms/web/entry-runtime-with-compiler.js
入口文件(src/platforms/web/entry-runtime-with-compiler.js)
- 带着问题来看源码,通过阅读入口文件源码来总结下当new vue的时候template 和 render函数都有的时候页面会输出哪个?
- 通过源码我们可以看出 当new vue的时候如果同时传入了render函数和template模板的话,是会渲染render函数而不会执行把template模板转为render函数的逻辑的