在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue實例和組件的區(qū)別?

vue實例和組件的區(qū)別?

我在根組件和組件的created生命周期分別打印了this
根組件是這樣的:
clipboard.png
組件是這樣的:
clipboard.png
但是看vue官方文檔說所有的Vue組件都是Vue實例
clipboard.png
我很懵...想請問一下

1、組件和vue實例的關(guān)系以及區(qū)別
2、一個spa只有一個Vue實例嗎?

回答
編輯回答
她愚我

基本可以當作一個東西,文檔也是那么說的,組件都是實例。所有同個環(huán)境下的實例公用自增的 _uid 編號。

一般我把組件分為三種:

  1. 根組件,內(nèi)部可以含有子組件,是整個組件樹的最上層。
  2. 子組件,非最上層的組件,當然內(nèi)部也可以包含更低層的子組件。
  3. 游離組件:通過 new Vue('').$mount(xx) 的方式向組件樹之外的 body中掛載新的實例(很多通知、彈窗性的組件都是這么實現(xiàn)的),一般是臨時性質(zhì)的,內(nèi)部可以包含子組件,但是只有簡單的功能和結(jié)構(gòu),其實也是本身這個小組件樹的最上層。

那么 SPA 呢?

  • SPA 只是不發(fā)生實際跳轉(zhuǎn)的單 html 的應用,單頁應用 SPA 的 html 跟組件的個數(shù)并沒有固定的關(guān)系,不管這個組件是 Vue、React 還是你自己實現(xiàn)的。
  • 一般我們的實現(xiàn)是在頁面中寫一個 #app#root 元素去掛載一個根組件 APP,然后在這個根組件內(nèi)使用 router-viewv-if 等去構(gòu)建 SPA 的結(jié)構(gòu),構(gòu)建的過程中就形成了以 APP 為根組件的組件樹。
  • 這中情況下可以說我們的 SPA 只有一個根組件。
  • 但是我們使用第三方庫的時候,用到彈窗或通知組件時,你會發(fā)現(xiàn)他們是通過 append 的方式被添加到 body 的,在結(jié)構(gòu)上是不屬于 APP根組件的,那么這個時候我們能不能說有多個根組件呢?
  • 同時,在構(gòu)建我們的 SPA 時,你也可以在 html 層面拆分成多個并列的#root1,#root2 去組織結(jié)構(gòu)。
2017年1月22日 23:44