我对虚拟DOM的一些思考

最近编写vue插件时我遇到了一个问题:通过引入函数调用,创建虚拟DOM,并且把它转成真实DOM且挂载到body容器中,但当我需要再次把某个组件通过同样的方式挂载到body容器中,(这里暂把第一次创建的虚拟DOM称作旧VNode,第二次创建的称作新VNode)。 原本我是想两个VNode都存在body中,且新VNode排在旧VNode的后面,但在执行新VNode的挂载时却发现body容器中只剩...

发布于 vue

仿ElMessage,自行封装一个全局message消息提醒

仿照element-plus的message消息提醒,自行封装一个简化版的全局message消息提醒 实现功能: 可以选择类型,如success、warning、error 通过vue插件或函数使用 但多次触发消息提示,只有一个消息提示框,目前还没实现多次触发弹出多个提示框 实现代码如下: src/components/Message/index.vue 1...

发布于 vue

编写vue3插件,实现一个全局满屏loading

插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。 插件没有严格定义的使用范围,app.use(xxx)就是在使用插件了。 官方已经为我们总结出来了,插件发挥作用的常见场景主要包括以下几种: 通过app.component()和app.directive()注册一到多个全局组件或自定义指令。 通过app.provide()使一个资源可被注入进整个应用 向app.co...

发布于 vue

JSX实现todoList案例

在vue2中使用JSX实现todoList案例,通过这个案例,可以了解template的v-if、v-for、v-on、v-model、为组件添加样式、传递自定义事件及数据,在JSX中如何实现。 注意:JSX是在render函数写的,由于使用了render函数,template就不用写了,因为template和render同时存在,会以template为准。 拆分组件Header:添加tod...

发布于 前端

脱离脚手架使用vue+elementUI

替换主题色 使用element官方提供的在线主题生成工具,将下载的压缩包解压缩并在页面中引入index.css 1234<!--将解压缩得到的全部样式放到eleui目录下--><link rel="stylesheet" href="./css/eleui/index.css"><script src="./js...

发布于 前端

slot的使用

默认插槽假设子组件<son>组件的模版如下: 1234567891011<div class="container"> <header> <h1>头部</h1> </header> <main> <slot></slot> </main...

发布于 vue

pinia

在vue3+ts的环境下使用pinia 安装 1npm install --save pinia 在mian.ts中 12345import {createPinia} from 'pinia'const app = createApp(App)app.use(createPinia())app.mount('#app') 在s...

发布于 前端