1. 程式人生 > 其它 >Vue 開發基礎(下)01

Vue 開發基礎(下)01

Vue 開發基礎(下)

  Vue 還有一些豐富功能,例如,通過 API(Application Programming Interface,應用程式程式設計介面) 構建自定義指令、元件、外掛,通過 Vue 屬性完成更強大的功能。

  全域性 API

    Vue.directive

      通過自定義指令可以對低階 DOM 元素進行訪問,為 DOM 元素新增新的特徵

<body>
<div id="app">
    <input type="text" v-focus="true">
</div>
</body>

<
script> // focus 對於自定義指令進行註冊 Vue.directive('focus', { // el 自定義指令元素 // binding 指定相關資訊 inserted(el, binding) { if (binding.value) { // 判斷 el.focus() 的值 若為 true 則文字框獲得焦點 反之則無 el.focus() } } }) var vm =
new Vue({ el: '#app', }) </script>

    Vue.use

      主要用於安裝外掛,通過外掛可以為 Vue 新增全域性功能。外掛可以是一個物件或一個函式,如果是物件,必須提供 isntall() 方法,用來安裝外掛;如果是一個函式,則該函式將被當成 install() 方法

<body>
<div id="app" v-my-directive></div>
</body>

<script>
    // 定義一個 MyPlugin(自定義外掛) 物件
let MyPlugin = {} // 編寫外掛物件的 install 方法 // Vue 為構造器 options 可選配置物件 MyPlugin.install = function (Vue, options) { console.log(options) // 在外掛中為 Vue 新增自定義指令 Vue.directive('my-directive', { bind (el, binding) { // 為自定義指令 v-my-directive 繫結 DOM 元素設定 style 樣式 el.style = 'width:100px;height:100px;background' } }) } // 第一個引數 MyPlugin 對於外掛物件的插入 /// 第二個引數 someOptions: true 傳入可選配置 Vue.use(MyPlugin, { someOption: true }) var vm = new Vue({ el: '#app' }) </script>

    Vue.extend

      基於 Vue 構造器建立一個 Vue 子類,可以對 Vue 構造器進行擴充套件。他有一個 options 引數,表示包含元件選項的物件。

<body>
<div id="app1">app1: {{ title }}</div>
<div id="app2">app2: {{ title }}</div>
</body>

<script>
    // Vue2 為 Vue 的子類
    var Vue2 = Vue.extend ({
        // 新增 data 資料
        data() {
            // 由於此時 Vue2 還未建立 所以把資料寫在函式的返回值中
            return { title: 'hello' }
        }
    })
    // 由於 vm1 沒有對於 資料的新增  故程式碼在執行中會報錯(title 屬性未定義)
    var vm1 = new Vue({
        el: '#app1'
    })
    var vm2 = new Vue2({
        el: '#app2'
    })
</script>

    Vue.set

      用於響應式物件中新增一個屬性,並確保這個新屬性同樣是響應式的,且觸發檢視更新

<body>
<div id="app">
    <div>{{ a }}</div>
    <div>{{ obj.b }}</div>
</div>
</body>

<script>
    var vm = new Vue({
        el: '#app',
        // 根級響應屬性必須在 data 中預先宣告
        data: {
            a: ' 我是根級響應式屬性 a ',
            obj: {}
        }
    })
    //     Vue.set(目標物件, 屬性名, 屬性值)
    Vue.set(vm.obj, 'b', ' 我是 Vue.set 新增的響應式屬性 obj.b ')
</script>

    Vue.mixin

      全域性註冊一個混入(Mixin),他將影響之後建立的每一個 Vue 例項。該介面主要提供給外掛作者使用,在外掛中向元件注入自定義的行為。該介面不推薦在應用程式碼中使用

<body>
<div id="app"></div>
</body>

<script>
    Vue.mixin({
        // 獲取 muOption 屬性, 將其轉換為大寫字母並後臺輸出
        created() {
            var myOption = this.$options.myOption
            if (myOption) {
                console.log(myOption.toUpperCase())
            }
        }
    })

    var vm = new Vue({
        // 自定義屬性
        myOption: 'Hello Vue !'
    })
</script>