Vue.js 实战系列之实现视频类WebApp的项目开发——13. 自定义全局弹出框组件的实现

如果想看该实战系列的其他内容,请移步至 Vue.js 实战系列之实现视频类WebApp的项目开发

项目仓库地址,欢迎 Star


实现效果

success 效果:
在这里插入图片描述
error 效果:
在这里插入图片描述


功能实现

  1. 自定义全局 toast 组件

    src/common/components 目录下,创建 toast 文件夹并新建toast.vuetoast.js文件

    toast.vue 创建弹窗样式

    <template>
      <div class="toast-box">
        <transition name="toast">
          <div class="toast" :class="type" v-show="show">
            <p>{{ message }}</p>
          </div>
        </transition>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          message: '弹出框',
          type: 'success',
          show: true,
        };
      },
    };
    </script>
    
    <style lang="less" scoped>
    .toast-box {
      .toast {
        position: fixed;
        left: 50%;
        top: 10%;
        transform: translate(-50%, -50%);
        background: rgba(255, 8, 8, 0.5);
        color: white;
        text-align: center;
        border-radius: 4px;
        font-size: 14px;
        line-height: 18px;
        padding: 0 10px;
      }
      /* 默认提示 */
      .success {
        background: rgba(0, 0, 0, 0.5);
      }
      /* 失败提示 */
      .error {
        background: #fe2c55;
      }
      .toast-enter-to, .toast-leave {
        opacity: 1;
      }
      .toast-enter-active, .toast-leave-active {
        transition: all ease 0.5s;
      }
      .toast-enter, .toast-enter-to {
        opacity: 0;
      }
    }
    </style>
    

    toast.js
    使用 vue.extend() 构造器创建一个 “子类”

    // 实例化组件
    import Vue from 'vue';
    // 导入 toast 组件
    import toast from './toast.vue';
    // 创建一个toast构造器
    const Toast = Vue.extend(toast);
    // 创建一个实例对象
    let instance;
    // 时间,设置一个定时器 用于关闭toast提示框
    let timer = null;
    
    // 设置参数
    const toastMsg = (options) => {
        // 判断是否实例化
        if (!instance) {
            // 创建一个实例
            instance = new Toast();
            // 挂载到页面
            document.body.append(instance.$mount().$el);
        }
        // 设置默认时间
        instance.duration = 1500;
        // 设置提示内容
        if (typeof options === 'string') {
            instance.message = options;
        } else if (typeof options === 'object') {
            instance.type = options.type;
            instance.message = options.message;
            instance.duration = options.duration || 1500;
        } else {
            return;
        }
        // 展示 toast
        instance.show = true;
        timer = setTimeout(() => {
            instance.show = false;
            // 清空定时器
            clearTimeout(timer);
            timer = null;
        }, instance.duration);
    };
    
    export default toastMsg;
    
  2. 将创建好的构造器注册到全局上

    main.js

    import Vue from 'vue';
    import App from './App.vue';
    // ...
    // 自定义弹出框
    import Toast from './common/components/toast/toast';
    // 挂载到 Vue 上(原型链)
    Vue.prototype.$toast = Toast;
    
    new Vue({
      router,
      store,
      render: (h) => h(App),
    }).$mount('#app');
    
  3. 在需要的地方使用它即可

    // options === 'string'
    this.$toast('验证码发送成功');
    // options === 'object'
    this.$toast({
      message: '请输入正确的验证码',
      type: 'error',
      duration: 2000,
    });
    

总结

本章节需要注意的几个点:

  • vue.extend() 构造器的使用
  • new Vue()/Vue.Component/Vue.extend 之间的区别
  • 实例化 taost 组件的实现
  • 自定义全局 toast 组件
  • 将 toast 添加到 Vue 原型链上方便使用

上一章节: 12. 引入Vuex实现数据管理以及登录流程的实现

下一章节: 14. 用户信息界面实现

项目整体介绍:Vue.js 项目实战之实现视频播放类WebApp的项目开发(仿抖音app)


项目仓库地址,欢迎 Star。

有任何问题欢迎评论区留言讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《Vue.js前端开发基础与项目实战PDF》是一本关于Vue.js前端开发的实用教程。本书共分为两个部分,前半部分是关于Vue.js基础知识的介绍,后半部分通过实战项目的方式加深读者对Vue.js的理解与应用。 在前半部分,本书首先介绍了Vue.js的基本概念和原则,包括Vue实例、模板语法、计算属性、指令、生命周期等。读者通过这些基础知识的学习,能够了解Vue.js的基本工作原理,掌握Vue.js的基本语法和核心功能。 后半部分,本书通过一个完整的实战项目,引导读者将前半部分所学知识运用于实践。项目从需求分析、项目搭建到页面设计、数据交互等方面进行了详细的讲解。读者通过跟随实战项目的步骤,能够从中学会如何使用Vue.js构建一个完整的前端应用。 《Vue.js前端开发基础与项目实战PDF》的特点在于其结合了理论和实践,让读者既能够理解Vue.js的基本原理和语法,又能够通过实战项目的方式进行实际操作。这种结合使得读者可以更好地掌握Vue.js开发技巧,提升自己的前端开发能力。 总之,《Vue.js前端开发基础与项目实战PDF》是一本适合前端开发初学者的实用教程,通过学习本书,读者能够系统地了解和掌握Vue.js开发技术和应用,为自己的前端开发之路奠定坚实的基础。 ### 回答2: "vue.js前端开发基础与项目实战pdf" 是一本关于Vue.js前端开发的书籍,涵盖了基础知识和实战经验。该书以提供全面详细的教程和示例代码为目标,可用于初学者和有一定经验的开发者。 在基础部分,该书讲解了Vue.js的基本概念和特点,包括Vue.js的生命周期、组件和指令的使用方法、数据绑定和事件处理等。读者将学会如何搭建Vue.js项目,包括使用Vue CLI进行项目初始化和依赖管理,以及使用Webpack进行模块化开发和打包。 在项目实战部分,该书提供了多个实际案例供读者学习和实践。这些案例涵盖了常见的前端开发需求,如用户登录认证、数据可视化、实时通信等。每个案例都由浅入深地介绍了解决方案和实现细节,读者可以从中学习到实际项目开发中的技巧和经验。 此外,该书还介绍了Vue.js的常用插件和工具库,如Vue Router、Vuex、Element UI等,以及与后端API交互和服务器部署等相关内容。读者可以根据自己的需求选择合适的工具和技术栈,提高项目开发的效率和质量。 总之,"vue.js前端开发基础与项目实战pdf"是一本全面介绍Vue.js前端开发的教程书籍,适合想要学习Vue.js开发者。通过学习该书,读者可以掌握Vue.js的基础知识,提升前端开发技能,并能够应用Vue.js开发实际项目。 ### 回答3: 《vue.js前端开发基础与项目实战pdf》是一本介绍Vue.js前端开发基础及实战项目的电子书籍。 Vue.js是一款流行的JavaScript架,用于构建用户界面。它采用了MVVM(Model-View-ViewModel)架构模式,使开发者能够快速构建高性能的单页面应用程序。本书通过详细的讲解和实例演示,系统地介绍了Vue.js基础知识和开发实践。 首先,本书从Vue.js的概述入手,介绍了Vue.js的特点和优势,并介绍了其与其他流行架的比较。接着,本书详细介绍了Vue.js的基本语法、组件和指令,以及其数据绑定、事件处理、过滤器和表单验证等常用功能。读者可以通过学习这些基础知识,快速掌握Vue.js开发方法和技巧。 然后,本书通过实战项目来帮助读者更好地理解和应用Vue.js。这些项目包括购物车应用、电影列表和用户管理系统等,涵盖了常见的业务场景。每个项目都有详细的代码实现和步骤说明,读者可以根据实际需求进行修改和扩展,提高自己的开发能力。 总的来说,《vue.js前端开发基础与项目实战pdf》是一本适合初学者和有一定经验的开发者的实用指南。通过学习这本书,读者可以从零开始掌握Vue.js的基础知识,并通过实践项目提升自己的开发能力。无论是对于想要学习Vue.js的新手,还是对于想要深入了解和运用Vue.js开发者,都是一本值得推荐的书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值