VUE 父組件與子組件的區別和聯繫

最近在用Vue作項目,對於Vue的組件總有點模棱兩可的理解,今天突然發現是對父組件和子組件在概念上有理解的問題,剛剛仔細研究了一下,很有所得,記錄一下。html

我在Vue的官網和書上沒有找到父子組件在概念上的解釋,但想要理解而且運用好組件,在概念上理解父子組件是很重要的。
通常來講,對於父組件的理解就是html中的自定義標籤,子組件是Vue自定義組件中的模版標籤,好比對於以下代碼:vue

<div id="app36">
        <testcomponent></testcomponent>
    </div>
    
    <script>
        Vue.component('testcomponent', {
            data: function(){
                return {count: 0}
            },
            template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
        })

    var app=new Vue({
            el: '#app35'
        })
    </script>

通常都會以爲父組件是<testcomponent></testcomponent>,或加上包含他的<div id="app36">,子組件是template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
這種理解雖然勉強正確,可是有很大問題,想要理解父子組件或兄弟組件之間的通訊,這樣的理解遠遠不夠。java

真正的父組件或子組件,應該站在更底層的角度去理解,我目前對父組件的理解是: 父組件是已被掛載的vue實例,而子組件,是被這個實例調用的自定義組件自己,而不單單是自定義標籤或自定義組件中的模版標籤。
在這個例子中,父組件是var app1=new Vue({el: '#app36'}), 而子組件是自定義的組件總體。編程

我爲何會有這樣的理解?說到這個問題,我須要提到後端的思惟模式,好比java,java裏也有父類子類,而對java來講,所謂的子類並不單單是帶着父類方法,還有虛擬機中一整套的父類的定義,這是在內存中編譯好的一處空間。我對於Vue目前並不熟悉,但它在不少方面相似後端編程語言,因此站在底層去思考仍是頗有必要的。後端

相關文章
相關標籤/搜索