首页 > 其他分享 >如何封装一个vue的插件

如何封装一个vue的插件

时间:2023-01-06 17:34:18浏览次数:38  
标签:toast 插件 vue 封装 js Vue install 组件 页面

首先在toast文件夹去创建一个index.js文件,在js文件中创建一个对象,将他导出

// index.js
const toast = {}
export default toast

 

 

在main.js中导入这个文件,并且use它

 

// main.js
import toast from 'toast/index.js'
Vue.use(toast)

 

 

我们知道use,就是调用该对象的install方法,因此我们要在index.js中写入install方法

 

// index.js
const toast = {}
toast.install = function() {
    // console.log() 这里可以自行做一个输出,看是否调用
}
export default toast

 

 

做了输出应该知道,确实调用了该方法,这个时候我们就可以在这个install方法里面做一些事情了:

 

拿到toast组件

将组件加入到页面中

将组件的展示方法给vue实例

这里解释一下这个思路

 

首先要拿到组件才可以对组件进行操作,

其次想办法将组件加入到页面,才可以在其他组件中不需要引入,一行代码就可以将小框显示在页面,

再来要将组件的展示方法给vue实例的prototype属性,这样才可以直接this.$toast.show()

来编写install的代码

 

toast.install = function (Vue) {
    console.log('use了')
    // 1. 创建组件构造器
    const toastConstructor = Vue.extend(Toast)
    // 2. 使用组件构造器创建一个组件
     const toast = new toastConstructor()
    // 3. 将组件手动挂载到一个元素上
    toast.$mount(document.createElement('div'))
    // 4. 将节点插入到页面中,$el就是改组件的节点
    document.body.appendChild(toast.$el)
    // 5. 将组件加入到vue实例上
    Vue.prototype.$toast = toast
}

 

 

 

解释一下这里的代码:

install方法会自动传入一个参数,是Vue的对象

我们直接将toast插入页面中是不可行的,因为组件是虚拟dom,并不是node节点

因此我们要通过组件来创建真实dom,然后挂载到页面中

步骤就是,使用extend创建一个组件构造器,使用组件构造器实例化一个组件对象,将组件对象手动挂载到一个元素上,然后插入到页面中

最后把这个组件实例给Vue.prototype.$toast我们就可以在其他地方使用this.$toast

标签:toast,插件,vue,封装,js,Vue,install,组件,页面
From: https://www.cnblogs.com/z-bky/p/17031151.html

相关文章

  • 第一节:环境准备、项目结构详解、App.vue/main.js/uni.scss详解、各种引用(组件/js/css
    一. 环境准备1. HbuilderX 下载地址:https://www.dcloud.io/hbuilderx.html 2. 微信开发工具 下载地址:https://developers.weixin.qq.com/miniprogram/dev......
  • 微信开发者工具安装扩展插件教程
    第一步:打开微信开发者工具,然后点击菜单栏的设置  第二步:点击通用设置       第三步:进入设置后,点击扩展        第......
  • vue导航触发流程
    导航被触发。在失活的组件里调用beforeRouteLeave守卫。调用全局的beforeEach守卫。在重用的组件里调用beforeRouteUpdate守卫(2.2+)。在路由配置里调用befor......
  • vue3+vite配置多页面
    通过配置多页面应用,从而将给子模块依赖分隔开各自加载,可以减少初始资源的请求,加快页面的访问速度。比如我们有很多H5页面,并且相互独立,比如报修,购卡,计价规则等等,那我们如......
  • vite+vue3项目在chrome中debuger源码
    在vue文件的script中打上一个debugger,本以为可以开心的debugger了,结果控制台看到的是这个样子查了一些方案,这样就可以解决了......
  • python + selenium 常用公共方法封装
     selenium环境配置及浏览器驱动的安装:https://www.cnblogs.com/gancuimian/p/16435300.htmluiautomator2常用公共方法封装见之前的帖子:https://www.cnblogs.com/gancu......
  • uni-app HBuilderX 工程转换 vue-cli 工程
    1、使用vue-cli4新建空工程vuecreate-pdcloudio/uni-preset-vuemy-project地址不行就直接下载,使用本地地址2、将HBuilderX工程内的文件(除unpackage、node......
  • vue3+ts利用el-table实现可编辑的表格
    说明在对表格数据进行操作时,如果数据项比较少,可通过自定义实现直接在表格中编辑。界面展示实现要点使用slot来自定义单元格,实现输入、选择等操作使用slot来自定义表......
  • vue 如何处理列表中展示进度的问题
      <template><divref="columnarStrip"class="columnarStrip"><divv-if="normal()"class="columnBox"><div:style="{width:widthPercent}"cl......
  • element ui可拖拽dialog-vue2
    文章目录​​1.准备js​​​​1.1`dialog-drag.js`​​​​1.2`index.js`​​​​2.`main.js`引用自定义指令​​​​3.使用​​1.准备js1.1​​dialog-drag.js​​......