vue組件學(xué)習(xí)

這是跟著高陽老師學(xué)習(xí)vue的課堂筆記辞槐,之前的都沒做筆記。??粘室。
高陽老師的官網(wǎng)是一起學(xué)js榄檬,本來想發(fā)到老師創(chuàng)建的社區(qū)的,發(fā)現(xiàn)已經(jīng)有人已經(jīng)發(fā)了筆記了衔统。我就不去發(fā)了鹿榜。感興趣的可以去學(xué)習(xí)。社區(qū)很好锦爵,高陽老師也是超級(jí)棒舱殿。


正文

vue的核心庫,解決了數(shù)據(jù)和視圖綁定問題险掀。

組件是vue強(qiáng)大功能之一沪袭。

vue的組件 和 HTML中的便簽 不是一個(gè)層面的東西了。這里的組件是對(duì)原始的HTML元素進(jìn)行封裝樟氢,來拓展它的能力冈绊。在較高層面上,組件是自定義的元素埠啃。vue.js的編輯器為它添加了特殊功能死宣。這些功能是原始的HTML不具備的。

在有些情況下碴开,組件也可以表現(xiàn)為用 is 特性進(jìn)行了擴(kuò)展的原生 HTML 元素毅该。

也就是說,與原生的HTML元素相比叹螟,元素增加了is特性鹃骂。

<div>
  <xu> xxx </xu>
</div>

<xu>非原生的標(biāo)簽,但是并沒有影響顯示罢绽,說明解析是容錯(cuò)的。在解析的時(shí)候也沒有什么問題静盅。

但是在某些情況下良价,比如在列表中寝殴,默認(rèn)的非原生的標(biāo)簽不能正常的顯示。

<table>
  <my-row>...</my-row>
</table>

<my-row>是不能被解析成 tr來使HTML顯示成我們希望的樣子明垢,

is特性(is what 是什么)蚣常,是表現(xiàn)為某種標(biāo)簽樣式的特性,比如下面示例痊银,is='my-row' 告訴瀏覽器 my-row標(biāo)簽作為一個(gè)tr標(biāo)簽使用抵蚊。

<table>
  <tr is="my-row"></tr>
</table>

is的那就話就是仿佛在說 這個(gè)元素是 什么什么 你先按這個(gè)解析。后續(xù)vue再偷天換日溯革。

以下三種贞绳,HTML可以正常解析,可以不使用is屬性致稀。

  • <script type="text/x-template">
  • JavaScript內(nèi)聯(lián)模板字符串
  • .vue組件

所有的vue組件同時(shí)也都是vue的實(shí)例冈闭。他們可以接受相同的選項(xiàng)對(duì)象,并提供相同的聲明周期鉤子抖单。

  • 一個(gè)組件是具備自己的聲明周期的萎攒,
  • 一個(gè)有自己的數(shù)據(jù)和方法,(注意矛绘,組件中的data必須是個(gè)函數(shù),不能是obj耍休,但是這個(gè)函數(shù)必須返回一個(gè)obj,最終data值其實(shí)還是個(gè)obj)
  • 組件和其他的組件是隔離的货矮。是不能調(diào)用其他組件的數(shù)據(jù)和方法的羹应。

他們之間需要通過一些方法來通信。

組件的創(chuàng)建方式:

創(chuàng)建全局組件:

Vue.component('name',option_obj)次屠;

全局組件意思是 所有的vue實(shí)例都可以訪問园匹,

全局組件是vue中是不常用的,要盡量避免使用全局組件劫灶。

組件創(chuàng)建(或者注冊(cè))之后裸违,便可以作為自定義標(biāo)簽在HTML中使用。

局部組件

不用全局創(chuàng)建本昏,通過某個(gè)Vue對(duì)象的components選項(xiàng)實(shí)現(xiàn)供汛。

new Vue({
  components : {
    ...
  }
});

除非所有的頁面都能用到的組件,否則不要定義為全局組件涌穆。

在vue選項(xiàng)對(duì)象中定義的組件怔昨,僅供該vue實(shí)例使用。

組件組合

組件可以組合宿稀,組件套組件趁舀。形成新的組件。

使用屬性prop傳遞數(shù)據(jù)

往組件里面塞數(shù)據(jù)祝沸,必須通過屬性傳遞矮烹。v-bind:message="message"

Vue.component('child', {
  // declare the props
  props: ['message'],
  // like data, the prop can be used inside templates and
  // is also made available in the vm as this.message
  template: '<span>{{ message }}</span>'
})

v-bind:message 可以縮寫成 :message

駝峰命名和短橫線命名

在vue中越庇,組件的名稱請(qǐng)使用短橫線方式。寫HTML時(shí)的習(xí)慣就是短橫線奉狈,而JavaScript中命名變量是習(xí)慣駝峰式命名的卤唉。

。仁期。桑驱。。

高階的HTML開發(fā)者可以都使用駝峰命名跛蛋。因?yàn)楦唠A的vue開發(fā)者熬的,不care HTML,HTML不是占主要部分问芬,JavaScript占據(jù)主導(dǎo)地位悦析。

v-指令 后面的雙引號(hào) 是表達(dá)式 ,不是v指定就是一個(gè)字符串常量。不會(huì)當(dāng)做js表達(dá)式計(jì)算

vue組件的數(shù)據(jù)流是單向的此衅,只允許父組件向子組件傳遞數(shù)據(jù)强戴,不允許組內(nèi)部的數(shù)據(jù)向父組件傳遞數(shù)據(jù)。否則就很亂挡鞍,數(shù)據(jù)會(huì)變得不可控骑歹。

正確的方式是,要保證數(shù)據(jù)的變化是可控的墨微,是可跟蹤的道媚。推薦的使用方式是:

1,定義一個(gè)局部變量翘县,并用prop的值初始化

2.定義一個(gè)計(jì)算屬性最域,數(shù)據(jù)來自 屬性 prop 的值

屬性prop驗(yàn)證

要指定驗(yàn)證規(guī)則,使用字符串是不可以的锈麸,要使用對(duì)象形式的镀脂。還可以設(shè)置一些可選項(xiàng)。

Vue.component('user-info',{
  props:  {
    name:{
      type:String,
      required:true,
      default:'xiaoming'
    }
  }
})忘伞;

抄代碼

  • 處理粘貼過來HTML代碼
    • 刪除不需要的
    • 腦子里要想一下大概長什么樣子薄翅,需要什么數(shù)據(jù),把HTML代碼修改成想要的模樣氓奈。
  • 創(chuàng)建vue實(shí)例翘魄,進(jìn)行數(shù)據(jù)綁定,事件綁定等舀奶。

使用立即執(zhí)行函數(shù)暑竟。快速構(gòu)建測試數(shù)據(jù)伪节。使用for循環(huán)構(gòu)建數(shù)據(jù)并返回光羞。

老師的搭建界面樣式都很6绩鸣,是因?yàn)槔蠋熁〞r(shí)間研究Bootstrap了怀大。把一件東西搞熟了纱兑,用習(xí)慣了,就搞的快了化借。

案例點(diǎn):

V-for 是可以傳入index的潜慎,需要使用括號(hào)

v-for= "(item,index) in menues"

避免使用硬編碼,維護(hù)起來太麻煩蓖康。

數(shù)據(jù)層面和服務(wù)器保持一致铐炫,可以減少很多判斷,減少bug蒜焊。

關(guān)于vue組件化的一些思考:

1.如何把代碼抽離成組件倒信?

2.數(shù)據(jù)是如何傳遞給組件的?

3.組件之間是如何傳遞數(shù)據(jù)的泳梆?

4.組件之間的事件是如何傳遞的鳖悠?

vue-cli是全新的前端開發(fā)方式。從原始的前端快放方式优妙,轉(zhuǎn)變成全新的方式乘综。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市套硼,隨后出現(xiàn)的幾起案子卡辰,更是在濱河造成了極大的恐慌,老刑警劉巖邪意,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件九妈,死亡現(xiàn)場離奇詭異,居然都是意外死亡雾鬼,警方通過查閱死者的電腦和手機(jī)萌朱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呆贿,“玉大人嚷兔,你說我怎么就攤上這事∽鋈耄” “怎么了冒晰?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竟块。 經(jīng)常有香客問我壶运,道長,這世上最難降的妖魔是什么浪秘? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任蒋情,我火速辦了婚禮埠况,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棵癣。我一直安慰自己辕翰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布狈谊。 她就那樣靜靜地躺著喜命,像睡著了一般。 火紅的嫁衣襯著肌膚如雪河劝。 梳的紋絲不亂的頭發(fā)上壁榕,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音赎瞎,去河邊找鬼牌里。 笑死,一個(gè)胖子當(dāng)著我的面吹牛务甥,可吹牛的內(nèi)容都是我干的牡辽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缓呛,長吁一口氣:“原來是場噩夢啊……” “哼催享!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哟绊,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤因妙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后票髓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攀涵,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年洽沟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了以故。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裆操,死狀恐怖怒详,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踪区,我是刑警寧澤昆烁,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站缎岗,受9級(jí)特大地震影響静尼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一鼠渺、第九天 我趴在偏房一處隱蔽的房頂上張望鸭巴。 院中可真熱鬧,春花似錦拦盹、人聲如沸鹃祖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惯豆。三九已至池磁,卻和暖如春奔害,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背地熄。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工华临, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人端考。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓雅潭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親却特。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扶供,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354