Vue 2.0入門基礎知識之全局API

3.全局API
3-1. Vue.directive 自定義指令
Vue.directive用於自定義全局的指令
實例以下:php

1 <body>
 2     <div id="app">
 3         <p v-sq="color">{{message}}</p>
 4     </div>
 5 </body>
 6 <script>
 7     Vue.directive('sq', function (el, binding, vnode) {
 8         el.style.color = binding.value;
 9     });
10     var vm = new Vue({
11         el: "#app",
12         data: {
13             message: "前端工程師",
14             color: "red"
15         }
16     });
17 </script>

效果爲p標籤顯示爲紅色,directive指令中的參數1(實例中的‘sq’)能夠類比前篇文章內部指令的bind、on;參數2是一個回調函數,這個回調函數包含三個參數(el:即指令綁定的元素,實例中的el即爲p元素;binding:包含指令的相關信息,能夠經過console.log打印出來;vnode:即Vue編譯生成的虛擬節點。虛擬節點即vue2.0中引入的新功能,用js對象替代DOM節點,改進直接操做DOM代價大引起的性能問題)。
指令都是有生命週期的,一樣地,自定義指令有5個生命週期,分別是:bind、inserted、update、componentUpdated、unbind
3-2  Vue.extend 構造器的延伸
extend中文即延伸、擴展的意思。Vue.extend返回的便是一個「擴展實例構造器,並掛載到自定義元素上。
實例以下:前端

1 <body>
 2     <div id="app">
 3       <p class="gz"></p>
 4     </div>
 5    <p class="gz"></p>
 6 </body>
 7 <script>
 8   var author=Vue.extend({
 9        template:"<a>最終解釋權歸做者全部</a>"
10    })
11    new author().$mount('.gz');
12 </script>

p標籤會替換成template的值,但僅限於第一個p標籤,由於只掛載了一次,實例中用的是class,將其換成id或標籤一樣適用。
3-3 Vue.set全局操做
Vue.set的做用就是在構造器外部操做構造器內部的數據、屬性或者方法。Vue.set存在的意義是彌補js語言的缺陷,由於Vue不能自動檢測數組的兩種變更:1.利用索引設置一個元素;2.修改數組的長度。用Vue.set更新數據時,依次傳入三個參數①數組名稱②索引③元素
3-4 Vue的生命週期
Vue的生命週期即鉤子函數。包括10共,按照順序依次爲:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeDastroy、destroyed。詳細的結構圖可參考vue官網的圖例介紹。
3-5 Template模板
Template模板大體有三種寫法:
1.相似前面講到Vue.extend掛載時的template寫法,但不是雙引號包括內容,而是``(英文tab鍵)
2.利用template模板:<template></template>。這個相似於Backbone中模板的寫法 
3.在script標籤中寫入模板內容,不過此時type爲"x-tempate".。這種寫法能夠將模板從外部導入。
另外須要強調一點、vue2.0中規定模板內容必需要要有一個根元素,通常地用div包裹住整個模板內容。
3-6 component組件
component組件本質上就是自定義的標籤。component組件分爲全局化註冊組件和局部註冊組件,二者的不一樣之處在於使用的範圍(類比於全局變量和局部變量)。
3-6-1 component組件的註冊
1.全局化註冊組件
實例以下:vue

1 <body>
 2     <div id="app">
 3         <plp></plp>
 4     </div>
 5 </body>
 6 <script>
 7     Vue.component('plp', {
 8         template: `<a>最終解釋權歸做者全部</a>`
 9     })
10     var vm = new Vue({
11         el: "#app"
12     })
13 </script>

2.局部註冊組件
實例以下:node

1 <body>
 2     <div id="app">
 3         <plp></plp>
 4     </div>
 5 </body>
 6 <script>
 7     var vm = new Vue({
 8         el: "#app",
 9         components: {
10             'plp': {
11                 template: `<p>最終解釋權歸做者全部</p>`
12             }
13         }
14     })
15 </script>

3-6-2 component組件的props屬性
component組件的props屬性就是用來設置和獲取標籤上的屬性值。
實例以下:數組

1 <body>
 2     <div id="app">
 3         <plp city="YiChang"></plp>
 4     </div>
 5 </body>
 6 <script>
 7     var vm = new Vue({
 8         el: "#app",
 9         components: {
10             'plp': {
11                 props:['city'],
12                 template: `<p>I like {{city}}</p>`
13             }
14         }
15     })
16 </script>

首先component組件的props選項經過['city']獲取自定義標籤該屬性的值,而後在tepmlate中經過{{city}}插值的方法設置屬性值。須要注意的一點是自定義標籤的屬性取值儘可能避免使用'-',若有必要使用小駝峯命名,能夠聯想到經過原生JS設置元素的顏色;elements.style.backgroundColor,而不是element.style.background-color
component組件傳值,使用:bind綁定便可。
3-6-3 component父子組件
component父子組件就是在一個component組件裏再寫一個component組件。
實例以下:前端工程師

1 <body>
 2     <div id="app">
 3         <plp :city="like"></plp>
 4     </div>
 5 </body>
 6 <script>
 7     var vm = new Vue({
 8         el: "#app",
 9         data: {
10             like: 'YiChang'
11         },
12         components: {
13             'plp': {
14                 props: ['city'],
15                 template: `<p>I like {{city}} <ppl></ppl></p>`,
16                 components: {
17                     'ppl': {
18                         template: `<span style="color:red">very much!</span>`
19                     }
20                 }
21             }
22         }
23     })
24 </script>

實例中涉及到component組件嵌套,在plp組件中嵌套組件ppl。固然實際開發中組件的嵌套遠比這個複雜,必要的時候能夠在構造器外部定義聲明局部component組件。
3-6-4 component標籤
<component></component>標籤是Vue框架自定義的標籤,它的用途就是能夠動態綁定咱們的組件,根據數據的不一樣更換不一樣的組件。
好啦,關於Vue的全局API就介紹到這裏,下一篇關於Vue的基礎知識,咱們聊聊Vue2.0的選項以及實例內置組件~
轉載於猿2048:→《Vue 2.0入門基礎知識之全局API》app

相關文章
相關標籤/搜索