弹窗组件

这个vue2和vue3是一样的

<template>
<div v-if="active" class="alert">
<div class="alert-box">
{{ text }}
</div>
</div>
</template>
<script> export default {
data() {
return {
active: false,
text: '',
timer: null
}
},
methods: {
info(text) {
console.log(this);
this.text = text;
this.active = true;
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
this.timer = setTimeout(() => {
this.active = false;
}, 2000);
}
}
}
</script>
<style lang="less">
.alert {
position: fixed;
z-index: 9;
top: 20px;
left: 0;
right: 0;
margin: auto;
width: 180px;
padding: 10px 16px;
border-radius: 2px;
margin: auto;
box-shadow: 0 3px 6px -4px #0000001f, 0 6px 16px #00000014,
0 9px 28px 8px #0000000d;
background-color: white;
color: black;
.icons {
position: relative;
top: 2px;
margin-right: 6px;
}
}
</style>

将组件注册为全局插件--vue2

import Alert from "./alert.vue";

export default {
install(Vue) {
// 通过Vue.extend创建子类(注意是个构造类)
const AlertCmp = Vue.extend(Alert);
// 初始化这个子类
const alertCmp = new AlertCmp();
// 将其挂载到指定dom上,也可以不写默认挂载到body上
const div = document.createElement("div");
document.body.append(div);
alertCmp.$mount(div); // 注册全局方法,方便使用
Vue.prototype.$alert = {
info: alertCmp.info
};
},
};

使用这个插件--vue2

import Vue from 'vue'
import App from './App.vue'
import Alert from '../packages' Vue.config.productionTip = false;
Vue.use(Alert); const app = new Vue({
render: h => h(App)
}).$mount('#app')

以下是vue3版本的操作,

我们来对比下

将组件注册为全局插件--vue3

import { createApp } from 'vue'
import Alert from "./alert.vue"; export default {
install(app) {
// 通过createApp创建子类实例 并挂载
const div = document.createElement("div");
document.body.append(div);
const alertApp = createApp(Alert).mount(div) // 注册全局方法,方便使用
app.config.globalProperties.$alert = {
info: alertApp.info
};
}
};

使用这个插件--vue3

import { createApp } from 'vue'
import App from './App.vue'
import alertGoodVue3 from '../packages' const app = createApp(App).use(alertGoodVue3).mount('#app')

vue2和vue3插件的区别的更多相关文章

  1. vue2和vue3生命周期的区别

    概念 首先,我们了解一下"生命周期"这个词.通俗的来说,生命周期就是一个事务从出生到消失的过程.例如,一个人从出生到去世.在vue中,vue的生命周期是指,从创建vue对象到销毁v ...

  2. vue2和vue3的区别?

    vue2和vue3的主要区别在于以下几点: 1.生命周期函数钩子不同 2.数据双向绑定原理不同 3.定义变量和方法不同 4.指令和插槽的使用不同 5.API类型不同 6.是否支持碎片 7.父子组件之间 ...

  3. vue2和vue3区别

    1. vue2和vue3双向数据绑定原理发生了改变 vue2的双向数据绑定是利用了es5 的一个API Object.definepropert() 对数据进行劫持 结合发布订阅模式来实现的.vue3 ...

  4. Vue2和Vue3技术整理1 - 入门篇 - 更新完毕

    Vue2 0.前言 首先说明:要直接上手简单得很,看官网熟悉大概有哪些东西.怎么用的,然后简单练一下就可以做出程序来了,最多两天,无论Vue2还是Vue3,就都完全可以了,Vue3就是比Vue2多了一 ...

  5. vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件

    如果你的vue2代码之前是使用vue-class-component 类组件模式写的.选择可以使用 https://github.com/facing-dev/vue-facing-decorator ...

  6. Vue2 到 Vue3,重温这 5 个常用的 API

    距离Vue3发布已经过去一年多时间了,从Vue2到Vue3是一个不小的升级,包括周边生态等.虽然目前大多数开发者们在使用的仍旧以Vue2为准,但Vue3显然是Vue开发者们未来必须面对的,而且前不久V ...

  7. vue2升级vue3:vue2 vue-i18n 升级到vue3搭配VueI18n v9

    项目从vue2 升级vue3,VueI18n需要做适当的调整.主要是Vue I18n v8.x 到Vue I18n v9 or later 的变化,其中初始化: 具体可以参看:https://vue- ...

  8. vue2升级vue3指南(二)—— 语法warning&error篇

    本文总结了vue2升级vue3可能会遇到的语法警告和错误,如果想知道怎样升级,可以查看我的上一篇文章:vue2升级vue3指南(一)-- 环境准备和构建篇 Warning 1.deep /deep/和 ...

  9. 盘点Vue2和Vue3的10种组件通信方式(值得收藏)

    Vue中组件通信方式有很多,其中Vue2和Vue3实现起来也会有很多差异:本文将通过选项式API 组合式API以及setup三种不同实现方式全面介绍Vue2和Vue3的组件通信方式.其中将要实现的通信 ...

  10. vue2升级vue3:vue-i18n国际化异步按需加载

    vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage 但是本文还是详细说一遍: 为什么需要异 ...

随机推荐

  1. 从DeepSeek看算法备案&大模型备案

    一.deepseek的备案情况 (一)算法备案情况 在算法备案系统网站上,北京深度求索人工智能基础技术研究有限公司和杭州深度求索人工智能基础技术研究有限公司分别进行了两个算法备案.从公司名称来看,正如 ...

  2. SpringBoot校验请求Json参数

    spring boot 校验请求json参数 在后端开发中,通过接口和参数传输来进行与前端交互,才可以让一个项目成型. 由于全后端隔离的方式,所以有时候需要不那么信任前端,也就是在验证当前操作是否有权 ...

  3. Unity3D教程:次表面散射的简单实现

    次表面散射指的是光线射入半透明材质,在内部发生散射后再透射出来的光线传播过程,考虑到有些项目会需要使用次表面散射,下面就给大家介绍下在Unity3D中次表面散射的简单实现,希望可以帮到大家. 一.前言 ...

  4. mybatis底层源码

    一.运行原理 二.配置文件的解析以及创建SqlSessionFactory 首先通过配置文件的文件流创建SqlSessionFactoryBuilder对象 调用build方法,传入文件流 之后通过解 ...

  5. CountDownLatch的countDown()方法的底层源码

    一.CountDownLatch的构造方法 // 创建倒数闩,设置倒数的总数State的值 CountDownLatch doneSignal = new CountDownLatch(N); 二.c ...

  6. 阿里云服务器中Linux下centos7.6安装mysql8.0.11

    1.下载安装 MySQL最新下载地址:https://dev.mysql.com/downloads/mysql/  选择的是Linux 64位通用的二级制版本,这样不在需要进行编译安装,系统安装依赖 ...

  7. Asp.net mvc基础(六)TempData

    在客户端重定向或验证码等情况下,由于要跨请求的存取数据,是不能放到ViewBag.Model中,需要"暂时存到Session中,用完了删除"的需求:使用TempData可以做到. ...

  8. 康谋分享 | 仿真驱动、数据自造:Anyverse巧用合成数据重构智能座舱

    随着汽车向智能化.场景化加速演进,智能座舱已成为人车交互的核心承载.从驾驶员注意力监测到儿童遗留检测,从乘员识别到安全带状态判断,座舱内的每一次行为都蕴含着巨大的安全与体验价值. 然而,这些感知系统要 ...

  9. Web前端入门第 37 问:多图细说 CSS grid 网格布局(二)子元素相关属性

    学习本文之前,建议先学习上一篇了解父元素的相关属性. 前文对 grid 网格布局中父元素容器相关的 CSS 属性做了详细介绍,本篇将继续学习子元素相关的 CSS 属性. 网格布局的一大波样式属性,父元 ...

  10. Sentinel源码—9.限流算法的实现对比

    大纲 1.漏桶算法的实现对比 (1)普通思路的漏桶算法实现 (2)节省线程的漏桶算法实现 (3)Sentinel中的漏桶算法实现 (4)Sentinel中的漏桶算法与普通漏桶算法的区别 (5)Sent ...