Vue文件形式如下:
<script>
export default {
name: 'ComponentName',
data () {
return {
msg: 'Hello World!'
}
},
methods: {
showMessage() {
alert(this.msg);
}
}
}
</script>
接下來我們來講解一下Vue文件的解析順序,Vue文件會被編譯成JavaScript對象,然后注入到Vue實例中。
首先,解析的第一個對象是export default,它包含了所有Vue實例的選項屬性,例如組件名稱,數據,方法等。這部分代碼被編譯成一個JavaScript對象。
// export default
{
name: 'ComponentName',
data () {
return {
msg: 'Hello World!'
}
},
methods: {
showMessage() {
alert(this.msg);
}
}
}
緊接著,Vue文件解析器會解析出一個template標簽,它用來定義組件的HTML模板。
// template
<emplate>
<div>
&lable>{{msg}}</label>
<button @click="showMessage">Show Message</button>
</div>
</template>
解析器會將HTML模板編譯成一個JavaScript函數,該函數接受一個名為createElement的參數,createElement被用來創建虛擬DOM節點,并返回這些節點。
下面是編譯完成后的JavaScript代碼示例:
// compiled JavaScript
function render(createElement) {
return createElement('div', [
createElement('label', this.msg),
createElement('button', {on: {'click': this.showMessage}}, 'Show Message')
])
}
最后,Vue文件解析器會將template標簽和其他混合配置項連成一個JavaScript對象,這個對象是一個組件選項(component option),這個組件選項會被注冊到Vue實例中。
// Vue component option
{
name: 'ComponentName',
data () {
return {
msg: 'Hello World!'
}
},
methods: {
showMessage() {
alert(this.msg);
}
},
render: function (createElement) {
return createElement('div', [
createElement('label', this.msg),
createElement('button', {
on: {
'click': this.showMessage
}
}, 'Show Message')
])
}
}
這樣,Vue文件解析順序的過程就結束了。通過這個過程,我們可以將Vue文件內的代碼解析、編譯和解析成可用的Vue組件。