自定義指令 ,自定義過(guò)濾器,組件的創(chuàng)建和使用,組件的高級(jí)用法-02

一、自定義指令的創(chuàng)建和使用

Vue自帶的指令很多升薯,v-for/v-if/v-else/v-else-if/v-model/v-bind/v-on/v-show/v-html/v-text...
但是這些指令都是比較偏向于工具化卸留,有些時(shí)候在實(shí)現(xiàn)具體的業(yè)務(wù)邏輯的時(shí)候膏燃,發(fā)現(xiàn)不夠用割捅,如何來(lái)自定義指令恩掷。

①注冊(cè)自定義指令

new Vue({
  directives: { //注冊(cè)指令碧囊,類似于注冊(cè)組件
    change: { //定義名為change的指令
      bind: function () {},
      update: function () {},
      unbind: function () {}
    }
  }
})

在自定義指令時(shí)树灶,在指令對(duì)應(yīng)的配置對(duì)象中有3個(gè)處理函數(shù)指令對(duì)應(yīng)的操作

bind:指令在綁定到元素要執(zhí)行的操作,只調(diào)用一次
update:如果在調(diào)用指令時(shí)候糯而,傳了參數(shù)天通,當(dāng)參數(shù)變化時(shí)候,就會(huì)執(zhí)行update所指定的方法
unbind:解綁要執(zhí)行的操作

②使用自定義指令

v-change

注意事項(xiàng):
建議在給指令的命名采用小駝峰式的命名方式熄驼,比如changeBackgroundColor,在使用的時(shí)候像寒,采用烤串式寫法 v-change-background-color

練習(xí):實(shí)現(xiàn)自定義指令v-time烘豹,在微博朋友圈中常見(jiàn)的將用戶發(fā)布某些內(nèi)容的時(shí)間改為“剛剛”,“XX分鐘前”等诺祸。

時(shí)間轉(zhuǎn)換邏輯:
1分鐘以前:顯示“剛剛”
1分鐘-1小時(shí)之間:顯示“XX分鐘前”
1小時(shí)-1天之間:顯示“XX小時(shí)前”
1天-1個(gè)月(31天)之間携悯,顯示“XX天前”
大于1個(gè)月,顯示“XX年XX月XX日”

二筷笨、自定義過(guò)濾器的創(chuàng)建和使用

vue支持在{{}}插值的尾部添加一個(gè)管道符“|”對(duì)數(shù)據(jù)進(jìn)行過(guò)濾憔鬼,經(jīng)常用于格式化文本比如字母大小寫,貨幣千位使用逗號(hào)分隔等等胃夏。
過(guò)濾器的作用:實(shí)現(xiàn)數(shù)據(jù)的篩選轴或、過(guò)濾、格式化仰禀。
vue1.版本是有內(nèi)置的過(guò)濾器照雁,但是在vue2.所有的版本都已經(jīng)沒(méi)有自帶的過(guò)濾器了。

1悼瘾、過(guò)濾器創(chuàng)建

過(guò)濾器的本質(zhì)是一個(gè)有參數(shù)有返回值的方法囊榜。

export default {
  data() {
    return {
        price:500,
    };
  },
  filters: {
    myCurrency: function (myInput) {
      return myInput+100;   //返回處理后的數(shù)據(jù)
    }
  }
};
2、過(guò)濾器使用
<any>{{price | myCurrency}}</any>
3亥宿、過(guò)濾器高級(jí)用法

在使用過(guò)濾器的時(shí)候卸勺,還可以指定參數(shù),來(lái)告訴過(guò)濾器按照參數(shù)進(jìn)行數(shù)據(jù)的過(guò)濾烫扼。

①如何給過(guò)濾器傳參曙求?
<h1>{{price | myCurrency('¥',true)}}</h1>
②如何在過(guò)濾器中接收到?
export default {
  data() {
    return {};
  },
  filters: {
    //myInput是通過(guò)管道傳來(lái)的數(shù)據(jù)
    //arg1在調(diào)用過(guò)濾器時(shí)在圓括號(hào)中第一個(gè)參數(shù)
    //arg2在調(diào)用過(guò)濾器時(shí)在圓括號(hào)中第二個(gè)參數(shù)
    myCurrency: function (myInput, arg1, arg2) {
      return 處理后的數(shù)據(jù);
    }
  }
};

常用過(guò)濾器鏈接 https://blog.csdn.net/dylan_zeng92/article/details/77850143

三映企、組件

w3c為什么有組件概念悟狱?
現(xiàn)在的前端領(lǐng)域,對(duì)于代碼的質(zhì)量和數(shù)量有著非常高的要求堰氓,特別容易出問(wèn)題挤渐。
通過(guò)組件的方式來(lái)完成代碼的管理和編寫。
組件:是一個(gè)可以被反復(fù)使用的 帶有指定功能的 視圖
組件化編程 一切都是組件component双絮,把可以被反復(fù)使用的任何的視圖 都可以封裝成組件

組件化的好處(封裝):
①提高了代碼的復(fù)用率
②提高開(kāi)發(fā)速度
③降低測(cè)試難度
④降低整個(gè)應(yīng)用的耦合度

1浴麻、組件的創(chuàng)建

組件需要注冊(cè)以后才可以使用,注冊(cè)分為全局注冊(cè)和局部注冊(cè)囤攀,全局注冊(cè)软免,任何Vue實(shí)例都可以使用。

Vue.component('my-component', {//全局注冊(cè)
  template: '<h1>it is a component</h1>'
})
export default {//局部注冊(cè)
  data() {
    return {
    };
  },
  components: {
    'my-component':myComponent
  },
};
2焚挠、組件的使用

組件的使用就像是使用普通的html標(biāo)簽一樣

<my-component> </my-component>

建議:組件的命名和使用建議來(lái)使用烤串式命名規(guī)則膏萧。
(如果組件的名字寫成駝峰式 myComponent,使用依然還得是烤串式)

注意:
①如果一個(gè)組件要渲染多個(gè)元素,將多個(gè)元素放到一個(gè)頂層標(biāo)簽;否則會(huì)報(bào)錯(cuò)榛泛。

3蝌蹂、復(fù)合組件

組件可以像vue實(shí)例那樣使用其他選項(xiàng),比如data,computed,methods,只是在使用data時(shí)和實(shí)例稍有區(qū)別挟鸠,這里的data必須是函數(shù)叉信,然后將數(shù)據(jù)return出去。

組件可以像html一樣來(lái)使用艘希,復(fù)合組件并不是一個(gè)新的概念硼身,就是一個(gè)組件,只不過(guò)該組件中又調(diào)用了其它的組件覆享。

一個(gè)完整的Vue的項(xiàng)目佳遂,可以比作是一顆組件樹(shù),組件樹(shù)的根 就是 根組件(my-article)....

組件樹(shù)可以幫助我們降低業(yè)務(wù)的復(fù)雜度撒顿,避免出現(xiàn)一些錯(cuò)誤丑罪,提高開(kāi)發(fā)速度。

4凤壁、組件的生命周期

分為4個(gè)階段:create/mount/update/destroy,每一個(gè)階段都對(duì)應(yīng)著有自己的處理函數(shù)吩屹。

create: beforeCreate created 初始化
mount: beforeMount mounted 和掛載相關(guān)的處理
update: beforeUpdate updated 根據(jù)要更新的數(shù)據(jù) 做邏輯判斷
destroy:beforeDestroy destroyed 清理工作

在Vue的實(shí)例或者在組件,都有哪些屬性拧抖?
el
data
methods
directives
filters
watch

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煤搜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唧席,更是在濱河造成了極大的恐慌擦盾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淌哟,死亡現(xiàn)場(chǎng)離奇詭異迹卢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)徒仓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門腐碱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人掉弛,你說(shuō)我怎么就攤上這事喻杈。” “怎么了狰晚?”我有些...
    開(kāi)封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)缴啡。 經(jīng)常有香客問(wèn)我壁晒,道長(zhǎng),這世上最難降的妖魔是什么业栅? 我笑而不...
    開(kāi)封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任秒咐,我火速辦了婚禮谬晕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘携取。我一直安慰自己攒钳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布雷滋。 她就那樣靜靜地躺著不撑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晤斩。 梳的紋絲不亂的頭發(fā)上焕檬,一...
    開(kāi)封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音澳泵,去河邊找鬼实愚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兔辅,可吹牛的內(nèi)容都是我干的腊敲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼维苔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碰辅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蕉鸳,我...
    開(kāi)封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乎赴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后潮尝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體榕吼,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年勉失,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羹蚣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乱凿,死狀恐怖顽素,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情徒蟆,我是刑警寧澤胁出,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站段审,受9級(jí)特大地震影響全蝶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一抑淫、第九天 我趴在偏房一處隱蔽的房頂上張望绷落。 院中可真熱鬧,春花似錦始苇、人聲如沸砌烁。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)函喉。三九已至,卻和暖如春蓄氧,著一層夾襖步出監(jiān)牢的瞬間函似,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工喉童, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撇寞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓堂氯,卻偏偏與公主長(zhǎng)得像蔑担,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咽白,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容啤握,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,046評(píng)論 0 29
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,204評(píng)論 0 6
  • # 傳智播客vue 學(xué)習(xí)## 1. 什么是 Vue.js* Vue 開(kāi)發(fā)手機(jī) APP 需要借助于 Weex* Vu...
    再見(jiàn)天才閱讀 3,530評(píng)論 0 6
  • 1.安裝 可以簡(jiǎn)單地在頁(yè)面引入Vue.js作為獨(dú)立版本晶框,Vue即被注冊(cè)為全局變量排抬,可以在頁(yè)面使用了。 如果希望搭建...
    Awey閱讀 10,999評(píng)論 4 129
  • 8月10日授段。我的姨媽從西安千里迢迢地趕了回來(lái)蹲蒲,姥姥為了慶祝,讓我們一起去過(guò)兩個(gè)景點(diǎn)侵贵,而五老峰就是其中一個(gè)届搁。 ...
    風(fēng)信子_1b1a閱讀 425評(píng)論 0 0