組件(一)
什么是組件
- 組件可以擴(kuò)展 HTML 元素秀又,封裝可重用的代碼。
組件是對原始HTML進(jìn)行一層封裝贬芥,來拓展它的能力吐辙。
- 在較高層面上,組件是自定義元素蘸劈,Vue.js 的編譯器為它添加特殊功能
vue的編輯器到底為元素添加了什么功能昏苏?我覺得可以綁定到元素上的東西,都是為它添加的功能威沫,而這些功能是原始html不具備的贤惯。
- 所有的 Vue 組件同時也都是 Vue 的實例,所以可接受相同的選項對象(除了一些根級特有的選項) 并提供相同的生命周期鉤子
這句話不太理解棒掠,是不是每一個組件都有自己的vue實例孵构,因為他們都是vue的實例。選項對象又是什么烟很?是不是每個組件有的對象? 如:template颈墅、data、methods等這些東西雾袱?所以每個組件都有自己的生命周期恤筛。不太理解。
全局注冊&局部組件
我查了一下芹橡,全局組件好像指:所有的vue實例都可以訪問毒坛。在任何地方都可以直接用。
類似于全局安裝變量林说,應(yīng)該是少用煎殷,除非所有組件都能夠用到的組件可以注冊到全局組件。那么我們寫過的組件就不是全局組件述么,應(yīng)為組件之間不能直接訪問蝌数,都需要引過來,components中注冊都使用度秘。是這個意思吧?話說vue-cli怎么注冊全局組件岸拧剑梳?我還不知道、滑潘、垢乙、
DOM 模板解析注意事項
主要講的是is特性,主要用tr语卤、ol標(biāo)簽需要用到is特性追逮。但是應(yīng)該遇到的很少酪刀。
里面提到了字符串模板,也就是HTML被當(dāng)成了字符串钮孵。但是.vue文件沒有這樣的問題骂倘。
data必須是函數(shù)
其實data雖然是函數(shù),但是函數(shù)里面卻return {}巴席,data最終的值還是一個對象历涝。為什么?我猜是因為對象是引用類型漾唉,返回的是一個地址荧库,所以需要包一層函數(shù)?
組件組合
組件傳值要在父組件中的子組件的標(biāo)簽上 :變量名=變量名
赵刑,在子組件中通過props:{變量名:xxxxx}分衫,來接收數(shù)據(jù),我平時用的這三個變量名是一致的般此,便于識別蚪战。
camelCase vs. kebab-case
camelCase是js的變量命名方式,kebab-case:是THML的命名方式恤煞。所有組件的放在HTML中用kebab-case屎勘,組件文件命名用帕斯卡,首字母大寫
因為這原來是HTML的命名方式居扒,現(xiàn)在vue對html進(jìn)行再封裝概漱,所以放在HTML中組件要寫成kebab-case,遵循原HTML樣式,符合HTML規(guī)范喜喂。
動態(tài)prop
父子組件通信就是動態(tài)的prop,父組件數(shù)據(jù)變化子組件接受到的數(shù)據(jù)就會動態(tài)變化瓤摧。
字面量語法 vs 動態(tài)語法
就說了一個只是點,為prop傳值不能傳常量玉吁,如果你一定要傳常量照弥,請加上v-bind,常量就變成了表達(dá)式进副。
<div a=1>
=><div :a=1>
單向數(shù)據(jù)流
規(guī)矩:值允許父往子傳數(shù)據(jù)不允許子往父傳數(shù)據(jù)这揣。也就是說不能讓子內(nèi)部數(shù)據(jù)發(fā)生的變化,傳給父組件影斑。
單向數(shù)據(jù)流给赞,這有點像函數(shù)純的特點,我調(diào)用一個函數(shù)100次矫户,返回給我100次相同的結(jié)果片迅,而不應(yīng)該是不同的結(jié)果。我覺得單項數(shù)據(jù)流皆辽,就是要保持這種純的特性柑蛇,如果還能逆向傳遞芥挣,那么vue組件內(nèi)部就會不可控。
父子組件通信就是為了保證數(shù)據(jù)是可控的耻台,可跟蹤的空免。
Prop 驗證
我們的項目規(guī)定的是props需要驗證,寫出需要的數(shù)據(jù)類型等