任何乙個頁面我們都可以看做成無數個元件的構成,但是元件只能有乙個根元素,也就是說我們需要將乙個大的div把它整個包起來,元件化的方式可以讓很多**進行復用,例如類似的表單註冊乙個元件後,只需要將元件名作為乙個標籤使用即可達到想用的效果。
可以看出,註冊元件時傳入的配置和建立vue例項差不多,但也有不同,其中乙個就是data屬性必須是乙個函式。
這是因為如果像vue例項那樣,傳入乙個物件,由於js中物件型別的變數實際上儲存的是物件的引用,所以當存在多個這樣的元件時,會共享資料,導致乙個元件中資料的改變會引起其他元件資料的改變。
而使用乙個返回物件的函式,每次使用元件都會建立乙個新的物件,這樣就不會出現共享資料的問題來了
由於html標籤本身就有很多的限制性,例如table標籤放不了div,option只能放在select裡面等,所以元件掛載元素的時候要注意使用i屬性,他可以避免自定義元件在標籤中的限制性
(1)區域性元件
在vue例項中使用例項屬性components來進行註冊,為區域性元件,只能在該vue例項繫結的dom節點內使用.
例如:
(2)全域性元件的註冊
①使用vue提供的靜態函式component註冊
②單檔案元件
即字尾為vue的檔案,每乙個檔案都是乙個單獨的元件,使用腳手架建立的的專案元件目錄位於src下的components裡,我們可以看看裡面的例子檔案,**如下:
單檔案元件以三個部分組成:模板,指令碼,樣式
模板:主要以html標籤及資料變數為主,是元件的基礎部分。
指令碼:即js**,主要是對資料的操作。
樣式:scoped代表這個樣式只在這個元件內生效。
有scope屬性後,能夠將標籤內部的css選擇器自動加上字尾,使其僅應用在此元件內。
vue基礎篇 vue元件《2》
我們通過vue的component方法來定義乙個全域性元件。定義好的元件,可以任意復用多次 你會發現每個元件互不干擾,都有自己的count值。怎麼實現的?當我們定義這個元件時,它的data 並不是像這樣直接提供乙個物件 data 取而代之的是,乙個元件的 data 選項必須是乙個函式,因此每個例項可...
Vue總結篇之元件通訊
目錄 非父子元件通訊 全域性通訊 通過 props 向下傳遞,通過事件向上傳遞。props 父子通訊 e mi t emit emit on 子父通訊 子元件 emit add c button 父元件 cartadd event cart 注意 派送和監聽事件都是同乙個主體,即誰派送誰就監聽 re...
Vue元件基礎
new vue 就可以認為是乙個大元件,但多個例項這樣太low了,vue為我們提供了component。1.全域性註冊的元件 要註冊乙個全域性元件,你可以使用vue.component tagname,options 例如 註冊 vue.component my component 建立根例項 va...