1.插件和组件的关系

在没有封装组件之前,如果不使用第三方插件,那么很多情况下我们会编写几个常用的组件来提供给页面使用,如Alert/Loading组件,而你可能需要在很多页面中引入并且通过components注册组件,但是像这样使用率很高的组件一般我们希望全局注册后直接就可以在相应页面使用,因此我们需要将他们封装成插件,比如像vux这样的ui组件库,即提供了组件功能也提供了某些全局注册的插件。

用一句话简单概括两者的关系就是:插件可以封装组件,组件可以暴露数据给插件。

2.以vux的alert组件为例

如果直接使用组件,要这样使用

<template>
<div id="app">
<input type="button" @click="buy" value="保存">
<alert v-model="is_alert"
title="商城提醒你:"
:content="alertContent"
@on-hide="hide"
>
</alert>
</div>
</template> <style> </style> <script>
import {Alert} from 'vux';
export default {
components: {
Alert
},
data(){
return {
is_alert: false,
alertContent: ""
}
},
methods: {
hide() {
alert('弹窗关闭了!');
},
buy() {
//alert("fdsf")
// 当点击购买时,将弹出框的显示值设置为 true
this.is_alert = true
this.alertContent = '保存成功!'
}
}
}
</script>

如果使用插件,这样即可:
https://www.cnblogs.com/cowboybusy/p/11026793.html

插件类似是这样开发的:

toast.vue是一个toast组件,

Toast.js是封装了这个组件的插件

Toast.js

import ToastComponent from './toast.vue'

const Toast = {};

// 注册Toast
Toast.install = function (Vue) {
// 生成一个Vue的子类
// 同时这个子类也就是组件
const ToastConstructor = Vue.extend(ToastComponent)
// 生成一个该子类的实例
const instance = new ToastConstructor(); // 将这个实例挂载在我创建的div上
// 并将此div加入全局挂载点内部
instance.$mount(document.createElement('div'))
document.body.appendChild(instance.$el) // 通过Vue的原型注册一个方法
// 让所有实例共享这个方法
Vue.prototype.$toast = (msg, duration = 2000) => {
instance.message = msg;
instance.show = true; setTimeout(() => { instance.show = false;
}, duration);
}
} export default Toast

具体参考文章:

https://blog.csdn.net/u012230055/article/details/82898245

Vue.use注册插件(对应Vue.componet注册组件),调用插件里的install方法,上例中insall方法里的

Vue.prototype.$toast
 
让每个vue组件有了一个$toast属性(此处$toast属性是方法),就可以这样调用:
methods: {
toast() {
this.$toast("你好");
}
}
vux里面使用插件的方式也跟这个类似 
 
 
 
 
 
 

最新文章

  1. 八月22日,django知识点总结:
  2. jvm--3.内存管理
  3. Ubuntu14.04源
  4. C#创建文件夹,往里追字符串。
  5. Flex 关闭浏览器
  6. TCP/IP协议详解 卷1—读书笔记(1)
  7. iOS 10.0 更新点(开发者视角)
  8. 【wikioi】2495 水叮当的舞步(IDA*)
  9. UML和模式应用
  10. shape及其子节点详解
  11. Windows 8 应用开发 - 异步调用
  12. PHP对MySQL数据库的相关操作
  13. 学习 JavaScript (八) 引用类型之 Object
  14. 迅雷最新bug已被找到!mac不用登录也可以极速下载了!
  15. Java--druidAPI查询
  16. c#计算 坐标点与坐标点之间的距离
  17. environment variable is too large 2047
  18. bolg迁移
  19. [转载]jsonp详解
  20. HotSpot VM

热门文章

  1. JS ES6补充
  2. 缓存读写策略 - Cache Aside.md
  3. intellij idea svn 切换分支
  4. 玩转Django2.0---Django笔记建站基础六(模型与数据库)
  5. 做.net的成为 微软mvp 是一个目标吧。
  6. 约束路由 用正则表达式约束路由 Constraining a Route Using a Regular Expression 精通ASP-NET-MVC-5-弗瑞曼
  7. NOI2.5 1253:Dungeon Master
  8. 3d动态文字的绘制
  9. 云原生 - Why is istio(二)
  10. Linux基础:简介安装、常用命令和JDK、Mysql、Tomcat的安装