dev js如何获取aspxcombox控件_Vue源码逐行解析(vue.js是从何而来的)

b940bef1f3d68cffef350e0101ddfaca.png

这个不用多说,地球人都知道是通过npm生成的,而我们的npm的命令配置一般存在于项目根目录的package.json文件的“scripts”标签字段。

打开“package.json”文件,我们找到如下位置:

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

可以看到第一个dev命名通过“rollup”执行,如果不太了解rollup.js的朋友可以看一下rollup官网的介绍:

rollup官方地址:https://www.rollupjs.com/

再看一下dev命令:

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

有一个target的参数,值为“web-full-dev”

我们再来找到定义这个命令的地方,路径为(vue/scripts/config.js)

找到如下代码:

'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
}

熟悉webpack打包的人,应该很熟悉这种语法,这就是打包带一个入口文件个输出的文件。

入口:web/entry-runtime-with-compiler.js

生成的文件:dist/vue.js

我们再到入口文件看一下(entry-runtime-with-compiler.js)

const mount = Vue.prototype.$mount
Vue.prototype.$mount = function (
el?: string | Element,
hydrating?: boolean
): Component {
el = el && query(el)
/* istanbul ignore if */
if (el === document.body || el === document.documentElement) {
process.env.NODE_ENV !== 'production' && warn(
`Do not mount Vue to <html> or <body> - mount to normal elements instead.`
)
return this
}

// 这是模板编译的代码

const { render, staticRenderFns } = compileToFunctions(template, {
outputSourceRange: process.env.NODE_ENV !== 'production',
shouldDecodeNewlines,
shouldDecodeNewlinesForHref,
delimiters: options.delimiters,
comments: options.comments
}, this)
options.render = render
options.staticRenderFns = staticRenderFns
......省略部分代码
}
return mount.call(this, el, hydrating)
}

我们看到首先是暂存了一份 mount 对象。

const mount = Vue.prototype.$mount

接着是给Vue.prototype对象上面挂载了一个$mount方法,

然后会去获取 “el” 这个参数,如果“el”是挂载在body或者html上面的话,就会触发一个警告,代码如下:

if (el === document.body || el === document.documentElement) {
process.env.NODE_ENV !== 'production' && warn(
`Do not mount Vue to <html> or <body> - mount to normal elements instead.`
)
return this
}

最后调用之前暂存的mount变量。

获取更多干货,可以私信小编噢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值