VUE全局api


一、什么是全局API?

全局API並不在構造器里,而是先聲明全局變量或者直接在Vue上定義一些新功能,Vue內置了一些全局API,比如我們今天要學習的指令Vue.directive。說的簡單些就是,在構造器外部用Vue提供給我們的API函數來定義新的功能。

二、Vue.directive自定義指令

我們在第一季就學習了內部指令,我們也可以定義一些屬於自己的指令,比如我們要定義一個v-jspang的指令,作用就是讓文字變成綠色。

在自定義指令前我們寫一個小功能,在頁面上有一個數字為10,數字的下面有一個按鈕,我們每點擊一次按鈕后,數字加1.

你不妨模仿下面的功能,在自己本地先寫出這個效果。我用JSRun提供了預覽和代碼展示功能,你也可以在線調試。

寫好了這個功能,我們現在就自己定義一個全局的指令。我們這里使用Vue.directive( );

 可以看到數字已經變成了綠色,說明自定義指令起到了作用。可能您看這個代碼還是有些不明白的,比如傳入的三個參數到底是什么。

三、自定義指令中傳遞的三個參數

el: 指令所綁定的元素,可以用來直接操作DOM。

binding:  一個對象,包含指令的很多信息。

vnode: Vue編譯生成的虛擬節點。

 

四、自定義指令的生命周期

自定義指令有五個生命周期(也叫鈎子函數),分別是 bind,inserted,update,componentUpdated,unbind

  1. bind:只調用一次,指令第一次綁定到元素時調用,用這個鈎子函數可以定義一個綁定時執行一次的初始化動作。
  2. inserted:被綁定元素插入父節點時調用(父節點存在即可調用,不必存在於document中)。
  3. update:被綁定於元素所在的模板更新時調用,而無論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新。
  4. componentUpdated:被綁定元素所在模板完成一次更新周期時調用。
  5. unbind:只調用一次,指令與元素解綁時調用。

 

 


 

第2節:Vue.extend構造器的延伸

一、什么是Vue.extend?

Vue.extend 返回的是一個“擴展實例構造器”,也就是預設了部分選項的Vue實例構造器。經常服務於Vue.component用來生成組件,可以簡單理解為當在模板中遇到該組件名稱作為標簽的自定義元素時,會自動調用“擴展實例構造器”來生產組件實例,並掛載到自定義元素上。

由於我們還沒有學習Vue的自定義組件,所以我們先看跟組件無關的用途。

 

二、自定義無參數標簽

我們想象一個需求,需求是這樣的,要在博客頁面多處顯示作者的網名,並在網名上直接有鏈接地址。我們希望在html中只需要寫<author></author> ,這和自定義組件很像,但是他沒有傳遞任何參數,只是個靜態標簽。

我們的Vue.extend該登場了,我們先用它來編寫一個擴展實例構造器。代碼如下:

 

這時html中的標簽還是不起作用的,因為擴展實例構造器是需要掛載的,我們再進行一次掛載。

這時我們在html寫<author><author>就是管用的。我們來看一下全部代碼:

最終實現結果:
三、掛載到普通標簽上

還可以通過HTML標簽上的id或者class來生成擴展實例構造器,Vue.extend里的代碼是一樣的,只是在掛載的時候,我們用類似jquery的選擇器的方法,來進行掛載就可以了。

 

 


 

第3節:Vue.set全局操作

Vue.set 的作用就是在構造器外部操作構造器內部的數據、屬性或者方法。比如在vue構造器內部定義了一個count為1的數據,我們在構造器外部定義了一個方法,要每次點擊按鈕給值加1.就需要用到Vue.set。

一、引用構造器外部數據:

什么是外部數據,就是不在Vue構造器里里的data處聲明,而是在構造器外部聲明,然后在data處引用就可以了。外部數據的加入讓程序更加靈活,我們可以在外部獲取任何想要的數據形式,然后讓data引用。

看一個簡單的代碼:

二、在外部改變數據的三種方法:

1、用Vue.set改變

2、用Vue對象的方法添加

3、直接操作外部數據

其實這三種方式都可以操作外部的數據,Vue也給我們增加了一種操作外部數據的方法。

三、為什么要有Vue.set的存在?

由於Javascript的限制,Vue不能自動檢測以下變動的數組。

*當你利用索引直接設置一個項時,vue不會為我們自動更新。

*當你修改數組的長度時,vue不會為我們自動更新。

看一段代碼:

這時我們的界面是不會自動跟新數組的,我們需要用Vue.set(app.arr,1,’ddd’)來設置改變,vue才會給我們自動更新,這就是Vue.set存在的意義。

 

 


 

第4節:Vue的生命周期(鈎子函數)

Vue一共有10個生命周期函數,我們可以利用這些函數在vue的每個階段都進行操作數據或者改變內容。

其實在Vue的官網有一張圖已經很好的詮釋了生命周期,我在這里就不再多講了,直接貼圖,然后上程序代碼。

 

我們直接來看一段代碼:

 


 

第5節:Template 制作模版

一、直接寫在選項里的模板

直接在構造器里的template選項后邊編寫。這種寫法比較直觀,但是如果模板html代碼太多,不建議這么寫。

javascript代碼:

這里需要注意的是模板的標識不是單引號和雙引號,而是,就是Tab上面的鍵。

二、寫在<template>標簽里的模板

這種寫法更像是在寫HTML代碼,就算不會寫Vue的人,也可以制作頁面。

 

三、寫在<script>標簽里的模板

這種寫模板的方法,可以讓模板文件從外部引入。

這節課我們學習了Template的三種寫法,以后學習到vue-cli的時候還會學到一種xxx.vue的寫法。


 

第6節:Component 初識組件

前言(廢話):component組件是Vue學習的重點、重點、重點,重要的事情說三遍。所以你必須學好Vue component。其實組件就是制作自定義的標簽,這些標簽在HTML中是沒有的。比如:<jspang></jspang>,那我們就開始學習這種技巧吧。

一、全局化注冊組件

全局化就是在構造器的外部用Vue.component來注冊,我們注冊現在就注冊一個<jspang></jspang>的組件來體驗一下。

我們在javascript里注冊了一個組件,在HTML中調用了他。這就是最簡單的一個組件的編寫方法,並且它可以放到多個構造器的作用域里。

二、局部注冊組件局部注冊組件和全局注冊組件是向對應的,局部注冊的組件只能在組件注冊的作用域里進行使用,其他作用域使用無效。

 

從代碼中你可以看出局部注冊其實就是寫在構造器里,但是你需要注意的是,構造器里的components 是加s的,而全局注冊是不加s的。

三、組件和指令的區別

組件注冊的是一個標簽,而指令注冊的是已有標簽里的一個屬性。在實際開發中我們還是用組件比較多,指令用的比較少。因為指令看起來封裝的沒那么好,這只是個人觀點。

 


 

第7節:Component 組件props 屬性設置

props選項就是設置和獲取標簽上的屬性值的,例如我們有一個自定義的組件<panda></panda>,這時我們想給他加個標簽屬性寫成<panda here=’China’></panda> 意思就是熊貓來自中國,當然這里的China可以換成任何值。定義屬性的選項是props。

一、定義屬性並獲取屬性值

定義屬性我們需要用props選項,加上數組形式的屬性名稱,例如:props:[‘here’]。在組件的模板里讀出屬性值只需要用插值的形式,例如{{ here }}.

上面的代碼定義了panda的組件,並用props設置了here的屬性值,在here屬性值里傳遞了China給組件。

最后輸出的結果是紅色字體的Panda from China.

二、屬性中帶’-‘的處理方式

我們在寫屬性時經常會加入’-‘來進行分詞,比如:<panda   from-here=”China”></panda>,那這時我們在props里如果寫成props:[‘form-here’]是錯誤的,我們必須用小駝峰式寫法props:[‘formHere’]。

html文件:

javascript文件:

PS:因為這里有坑,所以還是少用-為好。

三、在構造器里向組件中傳值

把構造器中data的值傳遞給組件,我們只要進行綁定就可以了。就是我們第一季學的v-bind:xxx.

我們直接看代碼:

Html文件:

javascript文件:

 

 

 


 

第8節:Component 父子組件關系

在實際開發中我們經常會遇到在一個自定義組件中要使用其他自定義組件,這就需要一個父子組件關系。

一、構造器外部寫局部注冊組件

上面上課我們都把局部組件的編寫放到了構造器內部,如果組件代碼量很大,會影響構造器的可讀性,造成拖拉和錯誤。

我們把組件編寫的代碼放到構造器外部或者說單獨文件。

我們需要先聲明一個對象,對象里就是組件的內容。

聲明好對象后在構造器里引用就可以了。

html中引用

 

二、父子組件的嵌套

我們先聲明一個父組件,比如叫jspang,然后里邊我們加入一個city組件,我們來看這樣的代碼如何寫。

 

 


 

第9節:Component 標簽

<component></component>標簽是Vue框架自定義的標簽,它的用途就是可以動態綁定我們的組件,根據數據的不同更換不同的組件。

1.我們先在構造器外部定義三個不同的組件,分別是componentA,componentB和componentC.

2.我們在構造器的components選項里加入這三個組件。

3.我們在html里插入component標簽,並綁定who數據,根據who的值不同,調用不同的組件。

這就是我們的組件標簽的基本用法。我們提高以下,給頁面加個按鈕,每點以下更換一個組件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM