vue基礎(chǔ)

條件渲染

v-if 與 v-show 的區(qū)別

  • 1固蚤、他們都能實(shí)現(xiàn)元素的顯示和隱藏

  • 2、v-show只是簡單的控制元素的display屬性(不管條件為真還是為假拳话,這個(gè)元素都會被渲染出來)先匪;而v-if才是條件渲染(條件為真,元素會被渲染弃衍,條件為假呀非,元素會被銷毀)。

  • 3镜盯、v-show有更高的首次渲染開銷岸裙;v-if的首次渲染開銷要小很多。

  • 4速缆、v-if有更高的切換開銷降允,v-show切換開銷比較小。

  • 5艺糜、v-if有配套的 v-else-if 和 v-else剧董,而v-show沒有。

  • 6破停、v-if可以搭配template使用翅楼,而v-show不行。

mixins混入

定義里一個(gè)對象真慢,這個(gè)對象包含有vue組件實(shí)例相關(guān)的選項(xiàng)的一個(gè)對象毅臊,可以混入到實(shí)例vue中,就變成了一個(gè)公有屬性黑界。data如果是一個(gè)混入對象的選項(xiàng)管嬉,那么data需要設(shè)置為工廠模式皂林,否則實(shí)例vm1修改data里的內(nèi)容,也會影響到vm2里的內(nèi)容宠蚂。除了 el 與 propsData 這兩個(gè)選項(xiàng)之外式撼,其他的選項(xiàng)都可以寫在定義的對象中混入。


var vm1 = new Vue({

    el:"#app1",

    mixins:[common],

    data:{

      mes:"world",//自身有就用自身的

      title:"toutou"

    },

    //生命周期函數(shù)  兩個(gè)都會執(zhí)行  自身和公用都有的話求厕,先執(zhí)行公有的著隆,再執(zhí)行自身的

    mounted(){

        console.log("自身的")

      }

})

組件

  • 組件的三大原則:==靈活性、復(fù)用性呀癣、高度可擴(kuò)展性==美浦。

組件中的使用情況

  • 1、 組件的使用项栏,先注冊浦辨,然后用組件名字做為標(biāo)簽來使用。

  • 2沼沈、 組件必須要有一個(gè) template 選項(xiàng)流酬,來指定這個(gè)組件的模板內(nèi)容愧沟。

  • 3稚叹、 組件的data選項(xiàng)棵介,必須是一個(gè)函數(shù)返回對象的形式唾琼。

  • 4、 組件的命名不能跟html標(biāo)簽沖突簇宽。

  • 5苔巨、 組件的template選項(xiàng)只能有一個(gè)根元素(就是只能有一個(gè)大盒子)槐脏。

  • 6店乐、 全局注冊的組件 Vue.componet 必須寫在 new Vue之前艰躺。

  • 7、 組件的命名可以盡量使用短橫線方式眨八,也可以用駝峰式命名腺兴;但是使用的時(shí)候需要換成短橫線方式,否則會報(bào)錯(cuò)找不到廉侧。

    • 7.1 使用 x-template 的script標(biāo)簽的方式的時(shí)候可以不用考慮短橫線命名的規(guī)則含长;使用單文件組件,也不需要考慮這條規(guī)則伏穆。

組件注冊分為全局注冊和局部注冊

1、全局注冊 Vue.component(組件的名字纷纫,組件的選項(xiàng)對象)

2枕扫、局部注冊 components 寫在Vue實(shí)例的內(nèi)部

全局注冊與局部注冊的區(qū)別

局部注冊的組件,在誰身上注冊的就只能用在那個(gè)身上辱魁。
全局組成的組件可以在任意地方使用烟瞧,但是必須要在 new Vue之前注冊诗鸭。

組件的寫法
  1. 直接使用 模板字符串的方式 template標(biāo)簽

  2. 使用單文件組件 (推薦)

  3. 使用 script 標(biāo)簽的方式 type="text/x-template"

組件的通信

  • 父與子的通信

1、需要在子組件中定義props選項(xiàng)参滴,來確定我需要哪些prop强岸。

2、父組件在調(diào)用子組件的時(shí)候砾赔,需要傳遞prop下來蝌箍,使用prop作為自定義屬性來寫在子組件的標(biāo)簽身上。

父組件給子組件傳遞一個(gè)屬性prop暴心,子組件用props接收后妓盲,就可以使用父組件的prop。

  • 子與父的通信

1专普、父調(diào)用子組件的時(shí)候悯衬,在子組件標(biāo)簽上綁定一個(gè)自定義事件。

2檀夹、子組件在某個(gè)時(shí)刻筋粗,觸發(fā)父親給綁定事件。

父組件給子組件綁定一個(gè)自定義事件炸渡,子組件需要修改的時(shí)候娜亿,觸發(fā)父組件綁定的事件并且傳遞參數(shù)過去,父組件接收后就可以修改了偶摔。

組件之間的通信除了用props父傳子暇唾,$emit子傳父,還有一些特殊操作(不推薦)

1辰斋、ref 用在組件標(biāo)簽上策州,通過$ref獲取到DOM元素直接修改上面的內(nèi)容

2、$root 實(shí)例屬性可以拿到跟組件對象宫仗,也就是new Vue 出來的實(shí)例

3够挂、$parent 實(shí)例屬性,可以拿到當(dāng)前組件的父組件的實(shí)例對象

4藕夫、$children 實(shí)例屬性孽糖,去獲取子組件的實(shí)例,得到的是一個(gè)子組件實(shí)例的集合

ref屬性

  • ref這個(gè)屬性毅贮,可以寫在標(biāo)簽上办悟,也可以寫在組件標(biāo)簽上。
  • 寫在標(biāo)簽上使用$refs獲取到的是 DOM對象
  • 寫在組件標(biāo)簽上獲取到的是 組件對象

v-model 其實(shí)是一種語法糖形式


    <input type="text" :value="name" @input="name = $event.target.value" />

注:$event

1滩褥、 $event用在普通的標(biāo)簽上病蛉,代表著事件對象。

2、 $event用在組件的標(biāo)簽上铺然,代表著觸發(fā)這個(gè)事件是傳遞過來的參數(shù)俗孝。

插槽

默認(rèn)在組件開始標(biāo)簽與結(jié)束標(biāo)簽中寫的內(nèi)容是無效的,如果需要將內(nèi)容渲染出去魄健,就需要使用插槽 slot 赋铝。

  • slot 是不限制次數(shù)的。

  • slot 是可以命名的沽瘦;slot 組件上使用 name 屬性給他命名革骨,那個(gè)插槽模板內(nèi)容要放到那個(gè) slot 坑里面,就需要帶著 name 的名字 slot=“name”其垄。

  • slot 還可以有個(gè)默認(rèn)不加鎖的坑苛蒲,沒寫name的就默認(rèn)放在這個(gè)坑里。

作用域插槽

把組件內(nèi)數(shù)據(jù)能夠在插槽模板內(nèi)容中使用绿满。

使用步驟:

1臂外、在 slot 標(biāo)簽上寫自定義的屬性,但是不能是 name喇颁。

2漏健、在相應(yīng)的 slot 的插槽模板內(nèi)容上面使用 slot-scope 接收第一部中傳遞過來的 porp集合。

插槽新語法橘霎,具名插槽(v-slot可以簡寫成 # )

1蔫浆、先在組件中的template中的slot標(biāo)簽上定義一個(gè)名字,但是不能是name姐叁。

2瓦盛、在頁面上用<template v-slot:msg></template>標(biāo)簽,里面寫v-slot:msg,也可以接收參數(shù)v-slot:msg=“obj"外潜,obj是一個(gè)對象原环,可以傳入多個(gè)屬性。


    Vue.component('hello',{

        template:`

            <div>

              <slot :msg="msg"></slot>

            </div>

        `

    })



    //頁面上使用

    <template v-slot:abc="obj">

        <h1>我是新寫法--{{ obj.msg }}</h1>

    </template>

注:其實(shí)<slot></slot>空標(biāo)簽有一個(gè)默認(rèn)default屬性处窥。


    <template v-slot:default="obj">

    </template>

非props特性

在使用組件的時(shí)候嘱吗,在組件標(biāo)簽上寫的特性,如果組件內(nèi)部沒有通過props選項(xiàng)去接收滔驾,那么這個(gè)特性就叫做非props特性谒麦,非props特性會自動寫入到組件的根元素上。

  • 非props的合并和替換已有的特性

除了class和style不會被替換哆致,其他屬性都會被替換绕德,除了class和style會被合并,其他屬性都不會被合并摊阀,只會替換耻蛇。

禁用特性繼承 inheritAttrs: false

inheritAttr:false 不會影響style和class的綁定剩瓶。

獲取非props特性

$attrs 能夠拿到非props特性,但是class和style拿不到城丧。

生命周期鉤子

生命周期分為八個(gè)步驟:

1、beforeCreate⊥愫住(創(chuàng)建之前)

2亡哄、created    (創(chuàng)建之后)

3布疙、beforeMount∥霉摺(掛載之前)

4、mounted  ×榱佟(掛載之后)

5截型、beforeUpdate (更新之前)

6儒溉、updated   』陆埂(更新之后)

7、beforeDestroy《倩痢(銷毀之前)

8波闹、destroyed   (銷毀之后)

一般在beforeDestroy這個(gè)生命周期做一下清除的事情(比如清除定時(shí)器涛碑,監(jiān)聽滾動條)

想要拿到組件中的dom元素精堕,需要在mounted這個(gè)生命周期函數(shù)之后才能獲取到。

通過axios發(fā)ajax請求

使用axios需要先引入axios的js

和jquery一樣蒲障,axios有三種寫法:


axios(

    {url:"url地址"歹篓,

    methods:'get',

    params:{

        data:'請求帶過去的東西'

    }).then();



axios.get(url,options);

axios.post(url,options);

還可以對 axios 做一個(gè)請求或響應(yīng)攔截,實(shí)現(xiàn)登陸校驗(yàn)的驗(yàn)證揉阎,驗(yàn)證token

fetch發(fā)ajax請求


// fetch 的get請求方式

fetch(url).then(res=>{

    return res.json();  //通過fetch獲取到的需要通過json轉(zhuǎn)換拿到想要的數(shù)據(jù) 

    }).then()

                        //轉(zhuǎn)換之后還需要return回去下面繼續(xù)鏈?zhǔn)秸{(diào)用

// fetch post請求方式

fetch('url',{

  method:'post',

  body:JSON.stringify({  可以帶參數(shù)去請求庄撮,但是要轉(zhuǎn)換成json字符串格式

    username:'zhangsan',

    password:'123'

  })

})

注意: fetch有個(gè)問題,獲取失敗余黎,但是第二個(gè).then會執(zhí)行重窟, 

    請求404沒找到catch抓取不到,不會走到catch回調(diào)中去惧财。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巡扇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垮衷,更是在濱河造成了極大的恐慌厅翔,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搀突,死亡現(xiàn)場離奇詭異刀闷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門甸昏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顽分,“玉大人,你說我怎么就攤上這事施蜜∽湔海” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵翻默,是天一觀的道長缸沃。 經(jīng)常有香客問我,道長修械,這世上最難降的妖魔是什么趾牧? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮肯污,結(jié)果婚禮上翘单,老公的妹妹穿的比我還像新娘。我一直安慰自己仇箱,他們只是感情好县恕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剂桥,像睡著了一般忠烛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上权逗,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天美尸,我揣著相機(jī)與錄音,去河邊找鬼斟薇。 笑死师坎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的堪滨。 我是一名探鬼主播胯陋,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袱箱!你這毒婦竟也來了遏乔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤发笔,失蹤者是張志新(化名)和其女友劉穎盟萨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體了讨,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捻激,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年制轰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胞谭。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垃杖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丈屹,到底是詐尸還是另有隱情缩滨,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布泉瞻,位于F島的核電站,受9級特大地震影響苞冯,放射性物質(zhì)發(fā)生泄漏袖牙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一舅锄、第九天 我趴在偏房一處隱蔽的房頂上張望鞭达。 院中可真熱鬧,春花似錦皇忿、人聲如沸畴蹭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叨襟。三九已至,卻和暖如春幔荒,著一層夾襖步出監(jiān)牢的瞬間糊闽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工爹梁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留右犹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓姚垃,卻偏偏與公主長得像念链,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子积糯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

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