91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么編寫Vue插件

發布時間:2021-11-19 16:31:15 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

本篇內容主要講解“怎么編寫Vue插件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么編寫Vue插件”吧!

什么是插件

在Vue框架中,如果需要給Vue增加一些我們需要的功能,Vue給我留了一個插件的方式,我們可以編寫自己的插件,然后在Vue中去注冊插件,然后去使用他。

通過Vue插件我們可以實現一些Vue框架沒有的功能,也可以使用別人寫好的插件,來幫助我們更快速的實現一些功能。

插件的功能范圍并沒有嚴格的要求,根據官方的示例來說,一般有下面幾種:

1.添加全局方法或者屬性,如:vue-custom-element,我們可以用插件方式添加一些全局組件,然后可以在任何頁面或者組件當中去使用它。這也是Element UI或者Ant Design組件庫安裝組件的方式。

2.添加全局資源:指令/過渡等。如:vue-touch,我們也可以用插件方式去添加一些全局的自定義指令,來實現我們的功能。

3.通過全局 mixin 來添加一些組件選項。(如vue-router)

4.添加全局實例方法,通過把它們添加到 config.globalProperties 上實現。比如常見我們可能會把$http請求放在全局實例方法上,方便我們在任何頁面或者組件中去使用,不再需要去顯式的import引入它。

5.一個庫,提供自己的 API,同時提供上面提到的一個或多個功能。如 vue-routervuex等。

編寫插件

編寫Vue插件其實很簡單,一個插件其實就是一個對象,或者是一個函數,如果是對象的話,那么就會調用對象里的 install 方法,如果是函數就會調用這個函數。無論是調用對象的 install 方法還是調用函數的方式,它們都會收到兩個參數:1是由 Vue 的 createApp 生成的 app 對象,2是用戶傳入的參數。

下面我們從最簡單的一個i18n功能開始。

一般我們都會把插件放在plugins文件夾下,這樣易于維護和管理

我們創建一個i18n.js文件

export default {
  install: (app, options) => {
    // 編寫插件代碼
  }
}

比如我們需要一個全局的函數來翻譯整個程序,我們可以將方法掛在app.config.globalProperties屬性上,來暴露出來。

函數接收一個key字符串,我們將使用它在用戶提供的參數對象中查找轉換后的字符串。

// plugins/i18n.js
export default {
  install: (app, options) => {
    app.config.globalProperties.$translate = key => {
      return key.split('.').reduce((o, i) => {
        if (o) return o[i]
      }, options)
    }
  }
}

假設用戶使用插件時,將在 options 參數中傳遞一個包含翻譯后的鍵的對象。我們的 $translate 函數將使用諸如 greetings.hello 之類的字符串,這樣查找到的值將會為 Bonjour!。

例如:

greetings: {
  hello: 'Bonjour!'
}

我們還可以使用inject來提供功能或者屬性,比如,我們可以允許應用程序訪問 options 參數以能夠使用在安裝插件時傳入的參數對象。

// plugins/i18n.js
export default {
  install: (app, options) => {
    app.config.globalProperties.$translate = key => {
      return key.split('.').reduce((o, i) => {
        if (o) return o[i]
      }, options)
    }
    app.provide('i18n', options)
  }
}

現在我們就可以使用 inject[i18n] 注入到一些頁面或者組件中來訪問該對象。

因為,Vue給我提供了app對象作為插件的第一個參數,所以插件可以使用所有其他功能,例如使用 mixin 和 directive。要了解有關 createApp 和應用程序實例的更多信息,請查看 Application API 文檔。

比如下面我們在插件內,又注冊了新的自定義指令,還有全局的mixin方法:

// plugins/i18n.js
export default {
  install: (app, options) => {
    app.config.globalProperties.$translate = (key) => {
      return key.split('.')
        .reduce((o, i) => { if (o) return o[i] }, options)
    }
    app.provide('i18n', options)
    app.directive('my-directive', {
      mounted (el, binding, vnode, oldVnode) {
        // some logic ...
      }
      //...
    })
    app.mixin({
      created() {
        // some logic ...
      }
      //...
    })
  }
}

使用插件

上面我們編寫完插件后,我們就可以去使用插件了。在Vue中使用插件也是非常簡單,我們可以通過使用 use() 方法將插件添加到我們的應用中。

use() 方法有兩個參數。第一個是要安裝的插件。

第二個參數是可選的,我們可以傳一些自定義參數給插件。

// main.js
import { createApp } from 'vue'
import Root from './App.vue'
import i18nPlugin from './plugins/i18n'
const app = createApp(Root)
const i18nStrings = {
  greetings: {
    hi: 'Hallo!'
  }
}
app.use(i18nPlugin, i18nStrings)
app.mount('#app')

最后我們在頁面中使用這個插件:

<template>
  <h2>{{ $translate("greetings.hi") }}</h2>
  <div>i18n插件示例</div>
</template>

最終顯示:

怎么編寫Vue插件

到此,相信大家對“怎么編寫Vue插件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

德保县| 德江县| 电白县| 靖远县| 肥西县| 微山县| 永新县| 德化县| 林甸县| 务川| 施甸县| 芜湖市| 山西省| 象州县| 吉安市| 敦煌市| 十堰市| 高陵县| 西丰县| 乐山市| 镇安县| 博客| 法库县| 南漳县| 新野县| 重庆市| 房产| 泽库县| 鸡泽县| 新竹县| 岢岚县| 峨边| 五指山市| 昭苏县| 芦山县| 虞城县| 鄄城县| 栾城县| 化隆| 延长县| 来宾市|