成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

VUE2.0學習筆記

pumpkin9 / 1654人閱讀

摘要:添加事件偵聽器時使用模式。只當事件是從偵聽器綁定的元素本身觸發(fā)時才觸發(fā)回調(diào)。差別在哪里將特性名轉(zhuǎn)換為從開始支持語法糖,會擴展成一個更新父組件綁定值的偵聽器。如果需要條件渲染多個元素,可以使用包裹。

1.前言 安裝

直接用

.png)

開發(fā)環(huán)境

vueTools

vscode【Vetur、Vue2 Snippets】

weboack

2.實例 聲明式渲染

{{ message }}
//js
var vm = new Vue({
  el: "#app",
  data: {
    message: "Hello Vue!"
  }
})
數(shù)據(jù)與方法

當一個 Vue 實例被創(chuàng)建時,它向 Vue 的響應式系統(tǒng)中加入了其 data 對象中能找到的所有的屬性。當這些屬性的值發(fā)生改變時,視圖將會產(chǎn)生“響應”,即匹配更新為新的值。

// 我們的數(shù)據(jù)對象
var data = { a: 1 }

// 該對象被加入到一個 Vue 實例中
var vm = new Vue({
  data: data
})

// 他們引用相同的對象!
vm.a === data.a // => true

// 設置屬性也會影響到原始數(shù)據(jù)
vm.a = 2
data.a // => 2

// ... 反之亦然
data.a = 3
vm.a // => 3

當這些數(shù)據(jù)改變時,視圖會進行重渲染。值得注意的是只有當實例被創(chuàng)建時 data 中存在的屬性是響應式的。也就是說如果你添加一個新的屬性,將不會觸發(fā)任何視圖的更新。如果你知道你會在晚些時候需要一個屬性,但是一開始它為空或不存在,那么你僅需要設置一些初始值。

var data = { a: 1 }
var vm = new Vue({
  el: "#example",
  data: data
})

vm.$data === data // => true
vm.$el === document.getElementById("example") // => true

// $watch 是一個實例方法
vm.$watch("a", function (newValue, oldValue) {
  // 這個回調(diào)將在 `vm.a` 改變后調(diào)用
})
自身屬性和方法

vue實例自身暴露的屬性和方法通過前綴$來獲取

var data = { a: 1 }
var vm = new Vue({
  el: "#example",
  data: data
})

vm.$data === data // => true
vm.$el === document.getElementById("example") // => true
實例生命周期

每個 Vue 實例在被創(chuàng)建之前都要經(jīng)過一系列的初始化過程(生命周期)。在這個過程中會運行一些叫做生命周期鉤子的函數(shù),用戶可以在不同階段添加自己的代碼來做一些事情。

beforeCreate:在實例初始化之后,數(shù)據(jù)觀測 (data observer) 和 event/watcher 事件配置之前被調(diào)用。

created:在實例創(chuàng)建完成后被立即調(diào)用。在這一步,實例已完成以下的配置:數(shù)據(jù)觀測 (data observer),屬性和方法的運算,watch/event 事件回調(diào)。然而,掛載階段還沒開始,$el 屬性目前不可見。

beforeMount:在掛載開始之前被調(diào)用:相關的 render 函數(shù)首次被調(diào)用。

mounted:el 被新創(chuàng)建的 vm.$el 替換,并掛載到實例上去之后調(diào)用該鉤子。

beforeUpdate:數(shù)據(jù)更新時調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補丁之前。

updated:由于數(shù)據(jù)更改導致的虛擬 DOM 重新渲染和打補丁,在這之后會調(diào)用該鉤子

beforeDestroy:實例銷毀之前調(diào)用。在這一步,實例仍然完全可用。

destroyed:Vue 實例銷毀后調(diào)用。調(diào)用后,Vue 實例指示的所有東西都會解綁定,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀。

activated/deactivated:keep-alive 組件激活/停用時調(diào)用,

errorCaptured:當捕獲一個來自子孫組件的錯誤時被調(diào)用。此鉤子會收到三個參數(shù):錯誤對象、發(fā)生錯誤的組件實例以及一個包含錯誤來源信息的字符串。此鉤子可以返回 false 以阻止該錯誤繼續(xù)向上傳播。

注意:

beforeCreate,created外的鉤子在服務器端渲染期間不被調(diào)用。

不要在選項屬性或回調(diào)上使用箭頭函數(shù),比如

//錯誤,會導致this不會指向Vue 實例
created: () => console.log(this.a)
vm.$watch("a", newValue => this.myMethod())
Vue對象的選項
var vm = new Vue({
  // 數(shù)據(jù)
  data: "聲明需要響應式綁定的數(shù)據(jù)對象",
  props: "接收來自父組件的數(shù)據(jù)",
  propsData: "創(chuàng)建實例時手動傳遞props,方便測試props",
  computed: "計算屬性",
  methods: "定義可以通過vm對象訪問的方法",
  watch: "Vue實例化時會調(diào)用$watch()方法遍歷watch對象的每個屬性",
  // DOM
  el: "將頁面上已存在的DOM元素作為Vue實例的掛載目標",
  template: "可以替換掛載元素的字符串模板",
  render: "渲染函數(shù),字符串模板的替代方案",
  renderError: "僅用于開發(fā)環(huán)境,在render()出現(xiàn)錯誤時,提供另外的渲染輸出",
  // 生命周期鉤子
  beforeCreate: "發(fā)生在Vue實例初始化之后,data observer和event/watcher事件被配置之前",
  created: "發(fā)生在Vue實例初始化以及data observer和event/watcher事件被配置之后",
  beforeMount: "掛載開始之前被調(diào)用,此時render()首次被調(diào)用",
  mounted: "el被新建的vm.$el替換,并掛載到實例上之后調(diào)用",
  beforeUpdate: "數(shù)據(jù)更新時調(diào)用,發(fā)生在虛擬DOM重新渲染和打補丁之前",
  updated: "數(shù)據(jù)更改導致虛擬DOM重新渲染和打補丁之后被調(diào)用",
  activated: "keep-alive組件激活時調(diào)用",
  deactivated: "keep-alive組件停用時調(diào)用",
  beforeDestroy: "實例銷毀之前調(diào)用,Vue實例依然可用",
  destroyed: "Vue實例銷毀后調(diào)用,事件監(jiān)聽和子實例全部被移除,釋放系統(tǒng)資源",
  // 資源
  directives: "包含Vue實例可用指令的哈希表",
  filters: "包含Vue實例可用過濾器的哈希表",
  components: "包含Vue實例可用組件的哈希表",
  // 組合
  parent: "指定當前實例的父實例,子實例用this.$parent訪問父實例,父實例通過$children數(shù)組訪問子實例",
  mixins: "將屬性混入Vue實例對象,并在Vue自身實例對象的屬性被調(diào)用之前得到執(zhí)行",
  extends: "用于聲明繼承另一個組件,從而無需使用Vue.extend,便于擴展單文件組件",
  provide&inject: "2個屬性需要一起使用,用來向所有子組件注入依賴,類似于React的Context",
  // 其它
  name: "允許組件遞歸調(diào)用自身,便于調(diào)試時顯示更加友好的警告信息",
  delimiters: "改變模板字符串的風格,默認為{{}}",
  functional: "讓組件無狀態(tài)(沒有data)和無實例(沒有this上下文)",
  model: "允許自定義組件使用v-model時定制prop和event",
  inheritAttrs: "默認情況下,父作用域的非props屬性綁定會應用在子組件的根元素上。當編寫嵌套有其它組件或元素的組件時,可以將該屬性設置為false關閉這些默認行為",
  comments: "設為true時會保留并且渲染模板中的HTML注釋"
});
3.模板語法

Vue.js 使用了基于 HTML 的模板語法,必須是合法的 HTML。在底層的實現(xiàn)上,Vue 將模板編譯成虛擬 DOM 渲染函數(shù)。

插值 文本

Message: {{ msg }}



這個將不會改變: {{ msg }}
HTML

Using v-html directive:

只對可信內(nèi)容使用 HTML 插值,絕不要對用戶提供的內(nèi)容使用插值。

特性

在插值中可以使用表達式,但只限簡單表達式。

{{ message.split("").reverse().join("") }}
指令

指令 (Directives) 是帶有 v- 前綴的特殊屬性。
指令的職責是,當表達式的值改變時,將其產(chǎn)生的連帶影響,響應式地作用于 DOM。

現(xiàn)在你看到我了

...
    • <ul id="i6e2s"><tbody id="i6e2s"></tbody></ul>
    • 指令 預期/限制 作用
      v-text string 文本插值
      v-html string html插值
      v-show any 條件顯示
      v-if、v-else、v-else-if any 條件渲染
      v-for Array/Object/number/string 列表渲染
      v-on(@) Function/Inline Statement/Object 事件綁定
      v-bind(:) any (with argument)/Object (without argument) 特性綁定
      v-model 僅限/

      Message is: {{ message }}

      復選框


      Checked names: {{ checkedNames }}
      new Vue({
        el: "#example-3",
        data: {
          checkedNames: []
        }
      })
      //Checked names: [ "Jack", "John", "Mike" ]

      單選按鈕



      Picked: {{ picked }}
      new Vue({
        el: "#example-4",
        data: {
          picked: ""
        }
      })
      //Picked: Two

      選擇框

      Selected: {{ selected }}
      new Vue({
        el: "...",
        data: {
          selected: ""
        }
      })
      //Selected: B

      為多選時則返回一個數(shù)組Selected: [ "A", "B" ]

      值綁定

      復選框

      單選按鈕

      選擇框的選項

      修飾符

      .lazy,默認input事件觸發(fā),使用此修飾則改為change事件觸發(fā)

      
      

      .number將輸入的值轉(zhuǎn)換為數(shù)值

      .trim過濾掉輸入內(nèi)容的首尾空白字符

      10.組件 簡介


      組件 (Component) 是 Vue.js 最強大的功能之一。組件可以擴展 HTML 元素,封裝可重用的代碼。組件是具有特殊功能的自定義元素。

      所有的 Vue 組件同時也都是 Vue 的實例,所以可接受相同的選項對象 (除了一些根級特有的選項) 并提供相同的生命周期鉤子。

      注冊組件 全局組件
      //注意確保在初始化根實例之前注冊組件 // 注冊 Vue.component("my-component", { template: "
      A custom component!
      " })
      局部組件
      var Child = {
        template: "
      A custom component!
      " } new Vue({ // ... components: { // 將只在父組件模板中可用 "my-component": Child } })
      自動注冊

      webpack 的 vue cli3+

      import Vue from "vue"
      import upperFirst from "lodash/upperFirst"
      import camelCase from "lodash/camelCase"
      
      const requireComponent = require.context(
        // 其組件目錄的相對路徑
        "./components",
        // 是否查詢其子目錄
        false,
        // 匹配基礎組件文件名的正則表達式
        /Base[A-Z]w+.(vue|js)$/
      )
      
      requireComponent.keys().forEach(fileName => {
        // 獲取組件配置
        const componentConfig = requireComponent(fileName)
      
        // 獲取組件的 PascalCase 命名
        const componentName = upperFirst(
          camelCase(
            // 剝?nèi)ノ募_頭的 `"./` 和結(jié)尾的擴展名
            fileName.replace(/^./(.*).w+$/, "$1")
          )
        )
      
        // 全局注冊組件
        Vue.component(
          componentName,
          // 如果這個組件選項是通過 `export default` 導出的,
          // 那么就會優(yōu)先使用 `.default`,
          // 否則回退到使用模塊的根。
          componentConfig.default || componentConfig
        )
      })
      注意

      data必須是帶return的函數(shù)

      如果將組件用于像

        、
          、

          以下類型模板無此限制:

          Prop

          父組件向子組件傳遞數(shù)據(jù)。

          Vue.component("child", {
            // 聲明 props
            props: ["message"],
            // 就像 data 一樣,prop 也可以在模板中使用
            // 同樣也可以在 vm 實例中通過 this.message 來使用
            template: "{{ message }}"
          })
          
          動態(tài) Prop:

          如果你想把一個對象的所有屬性作為 prop 進行傳遞,可以使用不帶任何參數(shù)的 v-bind

          todo: {
            text: "Learn Vue",
            isComplete: false
          }
          
          //等價于
          
          字面量語法 vs 動態(tài)語法
          
          
          
          
          驗證

          為組件的 prop 指定驗證規(guī)則,會在組件實例創(chuàng)建之前進行校驗。如果傳入的數(shù)據(jù)不符合要求,Vue 會發(fā)出警告。

          Vue.component("example", {
            props: {
              // 基礎類型檢測 (`null` 指允許任何類型)
              propA: Number,
              // 可能是多種類型
              propB: [String, Number],
              // 必傳且是字符串
              propC: {
                type: String,
                required: true
              },
              // 數(shù)值且有默認值
              propD: {
                type: Number,
                default: 100
              },
              // 數(shù)組/對象的默認值應當由一個工廠函數(shù)返回
              propE: {
                type: Object,
                default: function () {
                  return { message: "hello" }
                }
              },
              // 自定義驗證函數(shù)
              propF: {
                validator: function (value) {
                  return value > 10
                }
              }
            }
          })

          type 可以是下面原生構(gòu)造器StringNumber、Boolean、FunctionObject、ArraySymbol

          組件可以接收任意傳入的特性,這些特性都會被添加到組件的根元素上,且會做合并處理。

          自定義事件

          子組件向父組件傳遞數(shù)據(jù)。

          使用 $on(eventName) 監(jiān)聽事件

          使用 $emit(eventName) 觸發(fā)事件

          {{ total }}

          Vue.component("button-counter", {
            template: "",
            data: function () {
              return {
                counter: 0
              }
            },
            methods: {
              incrementCounter: function () {
                this.counter += 1
                this.$emit("increment")
              }
            },
          })
          
          new Vue({
            el: "#counter-event-example",
            data: {
              total: 0
            },
            methods: {
              incrementTotal: function () {
                this.total += 1
              }
            }
          })
          父子雙向通信

          .sync

          @update的語法糖

          
          this.$emit("update:foo", newValue)

          等價于

          
          this.$emit("update:foo", newValue)

          v-model(僅適用于表單輸入組件)

          v-on:inputv-bind:value的語法糖

          
          // 通過 input 事件帶出數(shù)值
          this.$emit("input", Number(formattedValue))

          等價于

          
          this.$emit("input", Number(formattedValue))
          非父子組件通信

          簡單場景bus.js

          var bus = new Vue()
          // 觸發(fā)組件 A 中的事件
          bus.$emit("id-selected", 1)
          // 在組件 B 創(chuàng)建的鉤子中監(jiān)聽事件
          bus.$on("id-selected", function (id) {
            // ...
          })

          注: 還可以使用$ref、$parent、$child進行通信,不過不推薦。

          復雜的場景請使用vuex

          插槽

          為了讓組件可以組合,我們需要一種方式來混合父組件的內(nèi)容與子組件自己的模板。這個過程被稱為內(nèi)容分發(fā)。
          編譯作用域: 父組件模板的內(nèi)容在父組件作用域內(nèi)編譯;子組件模板的內(nèi)容在子組件作用域內(nèi)編譯。

          單個插槽

          除非子組件模板包含至少一個 插口,否則父組件的內(nèi)容將會被丟棄。當子組件模板只有一個沒有屬性的插槽時,父組件傳入的整個內(nèi)容片段將插入到插槽所在的 DOM 位置,并替換掉插槽標簽本身。

          最初在 標簽中的任何內(nèi)容都被視為備用內(nèi)容。備用內(nèi)容在子組件的作用域內(nèi)編譯,并且只有在宿主元素為空,且沒有要插入的內(nèi)容時才顯示備用內(nèi)容。

          
          

          我是子組件的標題

          只有在沒有要分發(fā)的內(nèi)容時才會顯示。

          我是父組件的標題

          這是一些初始內(nèi)容

          這是更多的初始內(nèi)容

          我是父組件的標題

          我是子組件的標題

          這是一些初始內(nèi)容

          這是更多的初始內(nèi)容

          具名插槽

          元素可以用一個特殊的特性 name 來進一步配置如何分發(fā)內(nèi)容。多個插槽可以有不同的名字。具名插槽將匹配內(nèi)容片段中有對應 slot 特性的元素。

          仍然可以有一個匿名插槽,它是默認插槽,作為找不到匹配的內(nèi)容片段的備用插槽。如果沒有默認插槽,這些找不到匹配的內(nèi)容片段將被拋棄。

          
          

          這里可能是一個頁面標題

          主要內(nèi)容的一個段落。

          另一個主要段落。

          這里有一些聯(lián)系信息

          這里可能是一個頁面標題

          主要內(nèi)容的一個段落。

          另一個主要段落。

          這里有一些聯(lián)系信息

          作用域插槽

          和普通的插槽對比,能夠傳遞數(shù)據(jù)。

          
          
          hello from parent hello from child
          動態(tài)組件

          通過使用保留的 元素,并對其 is 特性進行動態(tài)綁定,你可以在同一個掛載點動態(tài)切換多個組件:

          var vm = new Vue({
            el: "#example",
            data: {
              currentView: "home"
            },
            components: {
              home: { /* ... */ },
              posts: { /* ... */ },
              archive: { /* ... */ }
            }
          })
          keep-alive

          把切換出去的組件保留在內(nèi)存中,保留其狀態(tài)或避免重新渲染

          
            
              
            
          
          注意事項

          組件復用性,松耦合

          謹慎使用ref

          在大型應用中使用異步加載

          PascalCase聲明, kebab-case使用

          為遞歸組件添加name

          對低開銷的靜態(tài)組件使用 v-once

          11.過渡和動畫

          Vue 在插入、更新或者移除 DOM 時,提供多種不同方式的應用過渡效果。

          單元素/組件的過渡

          適用場景:條件渲染 (使用 v-if)、條件展示 (使用 v-show)、動態(tài)組件、組件根節(jié)點

          hello

          new Vue({
            el: "#demo",
            data: {
              show: true
            }
          })
          .fade-enter-active, .fade-leave-active {
            transition: opacity .5s;
          }
          .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
            opacity: 0;
          }
          過渡的類名

          v-enter:定義進入過渡的開始狀態(tài)。在元素被插入時生效,在下一個幀移除。

          v-enter-active:定義過渡的狀態(tài)。在元素整個過渡過程中作用,在元素被插入時生效,在 transition/animation 完成之后移除。這個類可以被用來定義過渡的過程時間,延遲和曲線函數(shù)。

          v-enter-to: 2.1.8版及以上 定義進入過渡的結(jié)束狀態(tài)。在元素被插入一幀后生效 (與此同時 v-enter 被刪除),在 transition/animation 完成之后移除。

          v-leave: 定義離開過渡的開始狀態(tài)。在離開過渡被觸發(fā)時生效,在下一個幀移除。

          v-leave-active:定義過渡的狀態(tài)。在元素整個過渡過程中作用,在離開過渡被觸發(fā)后立即生效,在 transition/animation 完成之后移除。這個類可以被用來定義過渡的過程時間,延遲和曲線函數(shù)。

          v-leave-to: 2.1.8版及以上 定義離開過渡的結(jié)束狀態(tài)。在離開過渡被觸發(fā)一幀后生效 (與此同時 v-leave 被刪除),在 transition/animation 完成之后移除。

          動畫

          動畫在css中使用animation即可,其他和過渡類似。

          自定義過渡的類名

          我們可以通過以下特性來自定義過渡類名:
          enter-class、enter-active-class、enter-to-class (2.1.8+)、leave-class、leave-active-class、leave-to-class (2.1.8+)

          hello

          設定持續(xù)時間
          ...
          ...
          JavaScript 鉤子
          
            
          
          // ...
          methods: {
            // --------
            // 進入中
            // --------
          
            beforeEnter: function (el) {
              // ...
            },
            // 此回調(diào)函數(shù)是可選項的設置,done 是必須的 
            // 與 CSS 結(jié)合時使用
            enter: function (el, done) {
              // ...
              done()
            },
            afterEnter: function (el) {
              // ...
            },
            enterCancelled: function (el) {
              // ...
            },
          
            // --------
            // 離開時
            // --------
          
            beforeLeave: function (el) {
              // ...
            },
            // 此回調(diào)函數(shù)是可選項的設置,done 是必須的 
            // 與 CSS 結(jié)合時使用
            leave: function (el, done) {
              // ...
              done()
            },
            afterLeave: function (el) {
              // ...
            },
            // leaveCancelled 只用于 v-show 中
            leaveCancelled: function (el) {
              // ...
            }
          }
          初始渲染的過渡

          可以通過 appear 特性設置節(jié)點在初始渲染的過渡

          
          
            
          
          
          
            
          
          多個元素的過渡

          當有相同標簽名的元素切換時,建議給元素設置key。

          過渡模式

          in-out:新元素先進行過渡,完成之后當前元素過渡離開。

          out-in:當前元素先進行過渡,完成之后新元素過渡進入。

          
            
          
          多個組件的過渡

          多個組件的過渡使用動態(tài)組件

          
          
            
          
          
          new Vue({
            el: "#transition-components-demo",
            data: {
              view: "v-a"
            },
            components: {
              "v-a": {
                template: "
          Component A
          " }, "v-b": { template: "
          Component B
          " } } })
          列表過渡

          使用 組件。

          它會以一個真實元素呈現(xiàn):默認為一個 。你也可以通過 tag 特性更換為其他元素。

          內(nèi)部元素 總是需要 提供唯一的 key 屬性值

          {{ item }}

          組件還有一個特殊之處。不僅可以進入和離開動畫,還可以改變定位。v-move 特性,它會在元素的改變定位的過程中應用。

          
          
              
        1. {{ item }}
        2. .flip-list-move { transition: transform 1s; }

          也可以通過 move-class 屬性手動設置

          技巧

          創(chuàng)建可復用過度組件,將 或者 作為根組件

          
              
          

          動態(tài)過渡,通過動態(tài)綁定name實現(xiàn)

          
            
          
          12.可復用性和組合 混合

          混合 (mixins) 是一種分發(fā) Vue 組件中可復用功能的非常靈活的方式。混合對象可以包含任意組件選項。當組件使用混合對象時,所有混合對象的選項將被混入該組件本身的選項。

          // 定義一個混合對象
          var myMixin = {
            created: function () {
              this.hello()
            },
            methods: {
              hello: function () {
                console.log("hello from mixin!")
              }
            }
          }
          
          // 定義一個使用混合對象的組件
          var Component = Vue.extend({
            mixins: [myMixin]
          })
          

          當組件和混合對象含有同名選項時,這些選項將以恰當?shù)姆绞交旌?。比如,同名鉤子函數(shù)將混合為一個數(shù)組,因此都將被調(diào)用。另外,混合對象的 鉤子將在組件自身鉤子 之前 調(diào)用 。

          值為對象的選項,例如 methods, components 和 directives,將被混合為同一個對象。兩個對象鍵名沖突時,取組件對象的鍵值對。

          Vue.extend() 也使用同樣的策略進行合并。

          自定義指令

          除了核心功能默認內(nèi)置的指令 (v-model 和 v-show),Vue 也允許注冊自定義指令。

          // 注冊一個全局自定義指令 `v-focus`
          Vue.directive("focus", {
            // 當被綁定的元素插入到 DOM 中時……
            inserted: function (el) {
              // 聚焦元素
              el.focus()
            }
          })
          // 注冊一個局部自定義指令
          directives: {
            focus: {
              // 指令的定義
              inserted: function (el) {
                el.focus()
              }
            }
          }
          //使用
          
          鉤子函數(shù)

          一個指令定義對象可以提供如下幾個鉤子函數(shù) (均為可選):

          bind:只調(diào)用一次,指令第一次綁定到元素時調(diào)用。在這里可以進行一次性的初始化設置。

          inserted:被綁定元素插入父節(jié)點時調(diào)用 (僅保證父節(jié)點存在,但不一定已被插入文檔中)。

          update:所在組件的 VNode 更新時調(diào)用,但是可能發(fā)生在其子 VNode 更新之前。指令的值可能發(fā)生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新 (詳細的鉤子函數(shù)參數(shù)見下)。

          componentUpdated:指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。

          unbind:只調(diào)用一次,指令與元素解綁時調(diào)用。

          鉤子函數(shù)參數(shù)

          指令鉤子函數(shù)會被傳入以下參數(shù):

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

          binding:一個對象,包含以下屬性:

          name:指令名,不包括 v- 前綴。

          value:指令的綁定值,例如:v-my-directive="1 + 1" 中,綁定值為 2。

          oldValue:指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。

          expression:字符串形式的指令表達式。例如 v-my-directive="1 + 1" 中,表達式為 "1 + 1"。

          arg:傳給指令的參數(shù),可選。例如 v-my-directive:foo 中,參數(shù)為 "foo"。

          modifiers:一個包含修飾符的對象。例如:v-my-directive.foo.bar 中,修飾符對象為 { foo: true, bar: true }。

          vnode:Vue 編譯生成的虛擬節(jié)點。移步 VNode API 來了解更多詳情。

          oldVnode:上一個虛擬節(jié)點,僅在 update 和 componentUpdated 鉤子中可用。

          渲染函數(shù) & JSX

          https://cn.vuejs.org/v2/guide...

          渲染函數(shù)render createElement
          // @returns {VNode}
          createElement(
            // {String | Object | Function}
            // 一個 HTML 標簽字符串,組件選項對象,或者
            // 解析上述任何一種的一個 async 異步函數(shù),必要參數(shù)。
            "div",
          
            // {Object}
            // 一個包含模板相關屬性的數(shù)據(jù)對象
            // 這樣,您可以在 template 中使用這些屬性??蛇x參數(shù)。
            {
              // (詳情見下面的數(shù)據(jù)對象)
            },
          
            // {String | Array}
            // 子節(jié)點 (VNodes),由 `createElement()` 構(gòu)建而成,
            // 或使用字符串來生成“文本節(jié)點”??蛇x參數(shù)。
            [
              "先寫一些文字",
              createElement("h1", "一則頭條"),
              createElement(MyComponent, {
                props: {
                  someProp: "foobar"
                }
              })
            ]
          )

          數(shù)據(jù)對象:

          {
            // 和`v-bind:class`一樣的 API
            "class": {
              foo: true,
              bar: false
            },
            // 和`v-bind:style`一樣的 API
            style: {
              color: "red",
              fontSize: "14px"
            },
            // 正常的 HTML 特性
            attrs: {
              id: "foo"
            },
            // 組件 props
            props: {
              myProp: "bar"
            },
            // DOM 屬性
            domProps: {
              innerHTML: "baz"
            },
            // 事件監(jiān)聽器基于 `on`
            // 所以不再支持如 `v-on:keyup.enter` 修飾器
            // 需要手動匹配 keyCode。
            on: {
              click: this.clickHandler
            },
            // 僅對于組件,用于監(jiān)聽原生事件,而不是組件內(nèi)部使用
            // `vm.$emit` 觸發(fā)的事件。
            nativeOn: {
              click: this.nativeClickHandler
            },
            // 自定義指令。注意,你無法對 `binding` 中的 `oldValue`
            // 賦值,因為 Vue 已經(jīng)自動為你進行了同步。
            directives: [
              {
                name: "my-custom-directive",
                value: "2",
                expression: "1 + 1",
                arg: "foo",
                modifiers: {
                  bar: true
                }
              }
            ],
            // Scoped slots in the form of
            // { name: props => VNode | Array }
            scopedSlots: {
              default: props => createElement("span", props.text)
            },
            // 如果組件是其他組件的子組件,需為插槽指定名稱
            slot: "name-of-slot",
            // 其他特殊頂層屬性
            key: "myKey",
            ref: "myRef"
          }
          過濾器

          過濾器可以用在兩個地方:雙花括號插值和 v-bind 表達式。

          
          {{ message | capitalize }}
          
          
          
          //定義局部過濾器
          filters: {
            capitalize: function (value) {
              if (!value) return ""
              value = value.toString()
              return value.charAt(0).toUpperCase() + value.slice(1)
            }
          }
          //定義全局過濾器
          Vue.filter("capitalize", function (value) {
            if (!value) return ""
            value = value.toString()
            return value.charAt(0).toUpperCase() + value.slice(1)
          })

          過濾器可以串聯(lián),依次執(zhí)行,前面的輸出作為后面一個的輸入。

          {{ message | filterA | filterB }}

          過濾器可以接收參數(shù)(管道符前面的值作為第一個參數(shù),括號內(nèi)的第一個參數(shù)為第二個,依次類推)

          {{ message | filterA("arg1", arg2) }}
          13.Vue-Router 安裝

          直接用

          閱讀需要支付1元查看
      <blockquote id="i6e2s"></blockquote>
      <