一、在Vue中編寫插件流程
1、創建組件 components/message.vue
<template> <div class="message" v-if="isShow"> <span>{{message}}</span> </div> </template> <script> export default { created () { console.log(this.message) }, props:{ message:{ type:String, default:"成功" }, isShow:{ type:Boolean, default:true } }, methods:{ close(){ this.isShow=false } } } </script>
2、定義插件
Vue.js 的插件有一個公開方法 install方法
。這個方法的第一個參數是 Vue
構造器,第二個參數是一個可選的選項對象,我們可以通過這個方法來定義插件
import MsgCom from "./message.vue"; const message = {}; //Vue中用install來定義插件 message.install = function (Vue) {
//避免重復install
if(message.installed)return;
//通過Vue.extend創建一個Vue的子類 const MessageInstance = Vue.extend(MsgCom); let currentMsg; const initInstance = () => { //實例化vue子類 currentMsg = new MessageInstance(); //獲取子類的掛載點 let msgEl = currentMsg.$mount().$el; //將子類的掛載點掛載在頁面上 document.body.appendChild(msgEl); }; //在Vue的原型上添加實例,以全局調用 Vue.prototype.$msg = { //在實例上創建方法調用插件 showMsg(options) { if (!currentMsg) { initInstance(); } //將頁面的對象傳給currentMsg對象 Object.assign(currentMsg, options); setTimeout(() => { currentMsg.close(); }, 10000); } } } export default message;
3、使用插件
import Message from "./publish/message"; Vue.use(Message);