2024年前端最新vue封装单文件弹窗组件_vue,面试简历模板

最后

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!

可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

VUE想要实现一个普通弹窗,想必对于大部分前端开发者来说实现起来都是非常简单一件事情,但是如果说要封装某一个具体需求效果,可能就难倒不少同学 ,由此可见 从实现到封装这个过程是非常考验个人能力的!

普通弹窗无非就是新建弹窗文件 引用注册 提供一些数据 再加上某些函数 就能写好一个弹窗组件在页面使用

<template>
  <div>
    <messageBox v-if="show">弹出提示</messageBox>
    <button @click="show = true">显示</button>
  </div>
</template>
<script>
import messageBox from '../component/alert.vue';//引入组件
  export default {
    components: { messageBox },//注册
    data () {
      return {
        show: false
      }
    }
  }
  </script> 

这种弹窗简单是简单 可需求只要一个弹窗 真的有必要每个地方都引入注册在使用做一大堆重复操作吗?就像原生的JS弹窗就一个alert()就搞定的事情,到VUE里怎么还变复杂了呢,所以如果说要想把弹窗封装起来的话就需要考虑到代码易用性,实现一个弹窗可以很复杂,封装的时候多写点代码无所谓,反正封装只写一次,但是!使用的时候一定要简单,越简单越好,因为用的次数远远大于你封装实现的次数,一次封装无数次使用,那具体如何封装呢?

首先需要考虑的是  不需要在做成某一个具体组件了,就单单一个普通的JS函数即可实现

找到文件目录 新建一个文件夹 utils 在新建一个工具函数message.js 导出一个函数showMsg 参数为自定义消息 onClick则为具体的回调函数,当点击确定按钮之后执行的事情

export function showMsg(msg,onClick){
}

要想使用弹窗首先需要渲染这个弹窗 ,具体渲染逻辑vue.js官方文档就写的很清楚,我们只需要把对应的内容改成我们所需要的

e38219b7d0404dbcaf16c02d3e5f1db2.png

创建一个根组件,然后挂载到页面上的某一个元素

导入根组件

export function showMsg(msg, onClick) {
  //在页面创建一个DIV元素
  const div = docutment.createElement('div')
  docutment.body.appendChild(div)
  //渲染组件到界面上
  const app = createApp(MessageBox,{
    //传递事件 传递消息 执行关闭弹窗
    msg,
    onClick(){
      onclick(()=>{
        //关闭弹窗即 移除div
        app.remove(div)
      })
    }
  });
  // 挂载div
  app.mount(div)
}

MessageBox 为挂载的组件

这时候乍一看 这不就是 新建个 组件只不过是通过函数调用挂载到页面吗。

别着急接着往下看

一个程序首先要满足高内聚低耦合 到目前为止 一个弹框实际上还是使用了两个文件 一个js文件一个vue文件  一个功能使用两个文件 显然是违背高内聚了,在这里的MessageBox无非就是一个组件,那该怎么想办法把组件文件 写到js文件里面来呢?这就考验大家对vue组件的理解程度了,脱离了单文件如何写代码呢。

其实也不难,要明白组件的本质是什么呢?很明显组件的本质就是一个对象!一个配置对象,始终要记住,万物皆对象。脱离单文件我们直接把这个对象写到js里不就实现了 这个时候就需要使用的render函数了 render渲染JSX具体可以去官方文档一探究竟

Vue 提供了一个 h() 函数用于创建 vnodes:h() 是 hyperscript 的简称——意思是“能生成 HTML (超文本标记语言) 的 JavaScript”。这个名字来源于许多虚拟 DOM 实现默认形成的约定。一个更准确的名称应该是 createVnode(),但当你需要多次使用渲染函数时,一个简短的名字会更省力。

需要注意的是在JSX语法里是不支持大胡子语法的需要使用react那种写法

最后

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

[外链图片转存中…(img-nkvyccTi-1715595179126)]

[外链图片转存中…(img-orM024IA-1715595179127)]

好的,下面是一个基本的弹窗组件封装代码。代码中使用的是Element UI库中的Dialog组件,你可以根据自己的需求进行修改和定制。 ``` <template> <el-dialog :title="title" :visible.sync="visible" :modal="modal" :width="width" :fullscreen="fullscreen" :lock-scroll="lockScroll" :custom-class="customClass" :show-close="showClose" :before-close="beforeClose" > <slot></slot> </el-dialog> </template> <script> export default { name: 'MyDialog', props: { title: { // 弹窗标题 type: String, default: '' }, visible: { // 是否显示弹窗 type: Boolean, default: false }, modal: { // 是否为模态弹窗 type: Boolean, default: true }, width: { // 弹窗宽度 type: String, default: '50%' }, fullscreen: { // 是否全屏显示 type: Boolean, default: false }, lockScroll: { // 是否锁定滚动条 type: Boolean, default: true }, customClass: { // 自定义类名 type: String, default: '' }, showClose: { // 是否显示关闭按钮 type: Boolean, default: true }, beforeClose: { // 关闭前的回调函数 type: Function, default: () => {} } } } </script> ``` 这是一个非常基础的弹窗组件,你可以根据自己的需求进行扩展和修改。在使用时,你需要在父组件中引入该组件,并使用v-model绑定visible属性来控制弹窗的显示和隐藏状态。 ``` <template> <div> <el-button @click="visible = true">打开弹窗</el-button> <my-dialog v-model="visible" title="弹窗标题"> <p>这是弹窗内容</p> </my-dialog> </div> </template> <script> import MyDialog from './MyDialog.vue' export default { components: { MyDialog }, data() { return { visible: false } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值