---
# System prepended metadata

title: Vue - 建立自己的插件
tags: [Vue]

---

###### tags: `Vue`

# Vue - 建立自己的插件

插件通常用來為Vue添加全域功能。

## Vue 如何使用插件

通過全域方法Vue.use()使用插件。它需要在你呼叫new Vue()啟動應用之前完成：

```javascript
import Vue from 'Vue'
import SomePlugin from 'SomePlugin'

// calls `SomePlugin.install(Vue)`
Vue.use(SomePlugin)

new Vue({
  //... options
})
```

也可以傳入一個可選的選項物件：
```javascript
Vue.use(SomePlugin, SomeOptions)
```

Vue.use會自動阻止多次註冊相同插件，屆時即使多次呼叫也只會註冊一次該插件。

## Vue 如何建立插件

Vue.js的插件應該暴露一個install方法。這個方法的第一個參數是Vue構造器，第二個參數是一個可選的選項物件：

```javascript
SomePlugin.install = function (Vue, options) {

    // 註冊全域組件...
    Vue.component('SomeComponet',SomeComponet)
    
    // 註冊全域Mixin
    Vue.mixin({
        ....
    })

    // 註冊全域diretive
    Vue.directive('someEvent',{
        ....
    })
    
    // 註冊全域Filter 
    Vue.filter('filterName',function(value){})

    // 替Vue實例增加屬性
    Vue.prototype.$something = doSomething()
    
}

export SomePlugin
```

## 參考連結

* [Vue - Plugin](https://vuejs.org/v2/guide/plugins.html)
* [Writing a very simple plugin in Vue.js - (Example)](https://dev.to/nkoik/writing-a-very-simple-plugin-in-vuejs---example-8g8)
* [Creating Custom Vue.js Plugins](https://alligator.io/vuejs/creating-custom-plugins/)
