前端开发:Vue封装通过API调用的组件的方法

news2024/10/7 10:15:49

前言

在前端开发中,关于Vue的使用相比大家并不陌生,而且Vue框架的优势也是其他框架所不能比的,尤其是Vue的封装思想更是堪称一绝,还有就是组件化的运用实践过程也是亮点。所以关于Vue框架的使用想必看官都不陌生,而且常用的核心技术点就那么点,本文就来分享一下关于通过Vue封装API调用组件的使用,记录一下,方便后期查阅使用。

封装通过API调用的组件的设计思路

其实通过封装成API调用的组件设计思路就是单例模式的思路,通过单例思维可以让整个项目通用封装的唯一组件,可以达到拿来即用的效果,具体还是得根据实际的业务需求来确定,比如需要被公用且多个模块共同使用同一个数据源的情况;再比如实际业务场景中的一个自定义图标的弹窗组件,由于在多个地方都会使用到这个弹框组件,这就需要搞成公共组件来使用。

封装组件的方式

在实际Vue开发过程中,一般有两种封装Vue组件的方法:第一种就是常用的通过父组件props传值给子组件、子组件$emit回传值给父组件的方法;第二种就是通过调用API调用的组件的形式来使用。

单例模式定义

单例模式(Singleton),也叫单子模式,在软件开发中是一种常用的软件设计模式。在实际应用该模式的时候,单例对象的类必须保证只有一个实例存在,因为在很多时候整个项目中只需要拥有一个全局对象,这样有利于协调项目整体的行为,这种方式简化了在复杂环境下的配置管理。

单例模式的优缺点

1、优点

  • 在单例模式中,单例只有一个实例,对单例类的所有实例化得到的都是同一个实例。这样防止其它对象对自己的实例化,确保所有的对象都访问同一个实例;
  • 单例模式具有一定的伸缩性;
  • 由于在程序内存中只存在一个实例对象,因此可以节约系统资源,如果需要频繁创建和销毁的对象的时候,单例模式无疑可以提高系统的性能;
  • 可以避免对共享资源的多重占用。

2、缺点

  • 不适用于变化的对象,若同一类型的对象总是要在不同的用例场景发生变化,使用单例就会引起数据错乱,不能保存各自的正确的状态;
  • 单利模式中没有抽象层,所以单例类的扩展会很难;
  • 由于单例类的职责过重,在一定程度上违背了“单一职责原则”;
  • 滥用单例会带来一些负面的问题,如实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这会导致对象状态的丢失。

单例模式适用场景

单例模式只允许创建一个实例对象,因此节省内存,提高对象的访问速度,所以对象需要被公用的场合使用,如多个模块使用同一个数据源连接对象。

  1. 可用于需要频繁实例化然后销毁的对象;
  2. 可用于创建对象时耗时过多或者耗资源过多,但又经常用到的对象;
  3. 可用于有状态的工具类对象;
  4. 可用于频繁访问数据库或文件的对象。

使用API调用组件的示例

在实际开发中,关于使用API调用的组件的使用场景很多,这里只介绍几个常用的示例,方便参考使用。

示例一:封装一个自定义图标的弹框组件,然后通过使用API调用该组件

//1、封装自定义图标的弹框组件

<template>

<div id="tipPopup">

<div class="tipWrap">< img :src="img"/>

<p>{{text}}</p ></div></div>

</template><script>

export default {

name:’tipPopup', data(){

return{

text:'' ,

img:'' ,

}

}

</script>

<style lang="less">

#tipPopup{

.tipsWrap{

position: absolute;

background:#fff;

top:50%;

left:40%;

width:100px;

height:100px;

border-radius:8px;

img{

position: absolute;

left:0.85rem;

top:0.4rem;

}

}

}



//2、在Vue文件的同一目录下新创建tipPopup.js文件

import vue from 'vue';

import tipPopup from './tipPopup.vue‘



const TipConstr = Vue.extend(tipPopup);

// 使用这个方法调用tipPopup组件

function showTip(options){

options = options | | {};

if( typeof options==='object'){

     options ={

text: options.text,

img: options.img

     }

}else{

    new Error(‘参数错误!’)

}

// 实例化子组件

const tipInstence = new TipConstr({data:options});

let timer;

tipInstence.vm = tipInstence.$mount();

document.getElementById('app').appendChild(tipInstence.vm.$el);

timer=setTimeout(function(){

//3000毫秒后将组件移除

document.getElementById('app').removeChild(tipInstence.vm.$el);

clearTimeout(timer);

},3000)



export default showTip;



//3、具体的使用页面,调用的方法

openTip(){

    showTips({text:”提交成功”, img:success});

}

示例二:vue封装使用API调用组件

//1、封装实现vue组件模板

<template>

  <div>{{tipTitle}}</div>

</template>



<script>

export default {

data () {

  return {

    title:’test’,

    duration: 2000,

  }

}

}

</script>

<style>

</style>



//2、封装API文件,在Vue文件的同一目录下新创建test.js文件

import vue from 'vue';

import tipPopup from './test.vue‘



const temp = Vue.extend(test)



const Message = function (option) {

const msg = new temp({

    data: option

  })

  let vm = msg.$mount();

  let el = vm.$el;

  document.body.appendChild(el)

  setTimeout(() => {

    document.body.removeChild(el)

    msg.$destroy()

    vm = null

  },vm.duration)

}

export default Message



//3、使用,在具体需要使用的文件调用,import引入test.js文件,就通过方法调用组件

import test from './test.js';



test({

  text: ‘111’

});

拓展:父子组件通信

父组件通过props给子组件传值的(组件中的数据有三种:data、props、computed)。

 

最后

通过本文关于Vue封装通过API调用的组件的方法的介绍,如果认真阅读并且实践示例,应该会很好的掌握这些知识点,尤其是以后再遇到封装组件的时候可以往这个方式上面来使用,因为通过调用API形式的组件是比较方便且专业的方式,这是一篇值得阅读的文章,尤其是对于封装使用还不是太熟练的开发者来说甚为重要,重要性就不在赘述。欢迎关注,一起交流,共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP 的主要特点(计算机网络-运输层)

目录 传输控制协议&#xff08;Transmission Control Protocol&#xff0c;TCP&#xff09; TCP 连接与面向字节流的概念 TCP 的连接 UDP与TCP复用的区别 传输控制协议&#xff08;Transmission Control Protocol&#xff0c;TCP&#xff09; TCP 是面向连接的运输层协议 …

【算术】数据结构

MySQL性能优化1、数据结构前言2、常见的数据结构2.1 线性表2.1.1 数组2.1.2 链表2.1.3 栈2.1.4 队列2.2 散列表2.3 树2.3.1 二叉树2.4 图1、数据结构前言 数据结构(data structure)是计算机存储、组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合&#xff…

【工作流Activiti7】6、Activiti 7 源码学习

1. 启动分析 源码版本是 7.1.0.M6 首先从 ProcessEngineAutoConfiguration 开始 ProcessEngineAutoConfiguration 是activiti-spring-boot-starter 7.1.0.M6自动配置的入口类&#xff0c;在这里主要看 SpringProcessEngineConfiguration 主要是配置了自动部署 最最最重要的…

后渗透攻击(三)

目录 1、创建新账户 2、获取账号密码 3、远程屏幕控制 在进行提权后我们的操作空间就会大很多&#xff0c;可以进行一系列的创建新账户、获取账号密码、远程操控屏幕等等的操作。该文章就对一些常用的操作进行了整理。 1、创建新账户 查看目标靶机已存在用户 可以在meter…

[Jule CTF 2022] 部分WP

这个比赛参加的人极少&#xff0c;比赛有一星期那么长&#xff0c;快结束的时候来了个大牛&#xff0c;一下上到12000&#xff0c;我这6K只能排到第二了。不过题还是挺不错的。只是入口不是人链接&#xff0c;得自己输才能进&#xff0c;可能很多人因为这个没参加。 Crypto E…

【工作流Activiti7】5、Activiti7 多实例子流程

顾名思义&#xff0c;子流程是一个包含其他活动、网关、事件等的活动&#xff0c;这些活动本身形成了一个流程&#xff0c;该流程是更大流程的一部分。 使用子流程确实有一些限制&#xff1a; 一个子流程只能有一个none类型的启动事件&#xff0c;不允许有其他类型的启动事件…

C语言—结构体

结构体&#xff1a;将不同数据类型组合成一个新的数据类型&#xff1b; #include <stdio.h> struct Person {char name[50];int age;bool gender; }; int main() {} 定义了一个结构体Person&#xff0c;它包含一个字符数组成员name&#xff0c;int类型的age和bool类型的…

【生信原理】初探芯片表达谱分析

初探芯片表达谱分析 文章目录初探芯片表达谱分析实验目的实验内容实验题目实验过程数据的获取、解压与读取数据预处理&#xff08;背景纠正、标准化和探针信号汇总等&#xff09;数据过滤&#xff08;探针过滤&#xff09;探针注释&#xff08;添加基因注释信息&#xff09;lim…

Excel之INDIRECT函数实现某列元素上下翻转

Excel之INDIRECT函数实现某列元素上下翻转方法1&#xff1a;降序按钮1.0 使用条件1.1 选中元素序号列->排序和筛选->降序1.2 排序提醒对话框->排序1.3 处理后结果方法2&#xff1a;Indirect函数2.0 方法一的不足。2.1 INDIRECT函数处理及结果2.2 空白单元格的恢复及结…

客快物流大数据项目(一百):ClickHouse的使用

文章目录 ClickHouse的使用 一、使用Java操作ClickHouse 1、构建maven工程

用HTML+CSS构建一个绚丽的登录页面

用HTMLCSS构建一个绚丽的登录页面 参考文章&#xff1a; 动态水滴页面 自动切换背景的登录页面 登录页面代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" c…

[~/vulhub]/log4j/CVE-2021-44228-20221225

[~/vulhub]/log4j/CVE-2021-44228 ┌──(kwkl㉿kwkl)-[~/vulhub] └─$ cd log4j/CVE-2021-44228 ┌──(kwkl㉿kwkl)-[~/vulhub/log4j/CVE-2021-44228] └─$ dir 1.png 2.png docker-compose.yml README.md README.zh-cn.md┌──(kwkl㉿kwkl)-[~/vulhub/log4j/CVE-2021…

JSP ssh学生信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh 学生信息管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

TCP 报文段的格式(计算机网络-运输层)

目录 TCP 报文段的格式 TCP 报文段的格式 TCP虽然是面向字节流的&#xff0c;但TCP传送的数据单元却是报文段 TCP 报文段分为首部和数据两部分。TCP 的全部功能都体现在它首部中各字段的作用 TCP 报文段首部的前 20个 字节是固定的&#xff0c;后面有 4N 字节是根据需要而增加…

在linux上安装CMake

在linux上安装CMake一、下载CMake安装包二、配置环境变量三、验证是否能执行CMake四、CMake官方文档一、下载CMake安装包 本文演示环境为Linux系统&#xff0c;Redhat7 64位。 CMake提供了两种安装方式&#xff0c;一种是预编译好的二进制包&#xff0c;还有一种就是源码方式…

GateWay网关

GateWay 1. 什么是网关 网关是微服务最边缘的服务&#xff0c;直接暴露给用户&#xff0c;用来做用户和微服务的桥梁 没有网关&#xff1a;客户端直接访问我们的微服务&#xff0c;会需要在客户端配置很多的ip&#xff1a;port&#xff0c;如果user-service并发比较大&#x…

Unity URP 曲面细分

Unity URP 曲面细分 我终于变得不像我 文章目录Unity URP 曲面细分1 曲面细分与镶嵌1.1 外壳着色器 Hull Shader1.2 镶嵌器阶段 Tessellator1.3 域着色器阶段 Domain Shader2 具体实现2.2 不同的细分策略2.2.1 Flat Tessellation2.2.2 PN Tessellation2.2.3 Phone Tessellation…

Redis分布式锁的实现方式

目录一、分布式锁是什么1、获取锁2、释放锁二、代码实例上面代码存在锁误删问题&#xff1a;三、基于SETNX实现的分布式锁存在下面几个问题1、不可重入2、不可重试3、超时释放4、主从一致性四、Redisson实现分布式锁1、pom2、配置类3、测试类五、探索tryLock源码1、tryLock源码…

微软发布 Entity Framework EF Core 8 或 EF8

Entity Framework 现已被广泛使用&#xff0c;微软首席软件工程经理 Arthur Vickers 日前在一个在线社区会议上的发言。 Entity Framework Core 8.0&#xff08;也称为 EF Core 8 或 EF8&#xff09;的未来规划。EF Core 8 是 EF Core 7 之后的下一个版本&#xff0c;这将是一个…

链表的实现:无头单向非循环链表的实现

笔者在上篇博客书写了一个名为&#xff1a;链式存储之&#xff1a;链表的引出及其简介原文链接为&#xff1a;https://blog.csdn.net/weixin_64308540/article/details/128374876?spm1001.2014.3001.5501对于此篇博客&#xff0c;在一写出来&#xff0c;便引起了巨大反响&…