vue-全局组件和全局方法的使用

举报
林太白 发表于 2025/01/22 14:24:11 2025/01/22
【摘要】 vue-全局组件和全局方法的使用

全局组件和全局方法的使用

全局组件

☞ src下面新建plugins=> index.js 文件,用于注册全局组件

index.js 文件内容如下:

import modal from './modal'
export default function installPlugins(app){
  // 模态框对象
  app.config.globalProperties.$modal = modal
}

☞ modal.js 文件内容如下:

import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus'
export default {
  // 弹出提示
  msgBox(content) {
    ElMessageBox.alert(content, "系统提示")
  },
  // 错误提示
  msgBoxError(content) {
    ElMessageBox.alert(content, "系统提示", { type: 'error' })
  },
  // 成功提示
  msgBoxSuccess(content) {
    ElMessageBox.alert(content, "系统提示", { type: 'success' })
  },
  // 警告提示
  msgBoxWarning(content) {
    ElMessageBox.alert(content, "系统提示", { type: 'warning' })
  },
}

全局方法

接下来我们将项目的全局方法全部封装到一个文件夹中,方便管理

在src=> utils文件夹中创建一个vueGlobal.js,用于注册全局方法

⚪ main.ts中引入vueGlobal.js

import VueGlobal from '@/utils/vueGlobal.js'  // 导入插件

// 使用插件
app.use(VueGlobal)

然后我们完成一下对于这个全局定义的封装,这里首先是element-plus的封装

//  全局方法引入
import { ref, reactive, toRefs, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElNotification } from 'element-plus'
export default {
  install(app) {
    // 全局注册常用的 Vue 函数
    app.config.globalProperties.$ref = ref
    app.config.globalProperties.$ElNotification = ElNotification
  }
}

⚪ 使用

☞ vue2写法

之前我们在vue2之中我们使用的时候会按照这种写法进行使用

$ElNotification('xxx')

☞ vue3写法

在vue3 setup 组合式API之中我们可以通过 getCurrentInstance() 来获取实例


// 引入 getCurrentInstance
import { getCurrentInstance } from 'vue'

// 调用
const { proxy } = getCurrentInstance()

//使用
proxy.$ElNotification('xxx')

全局注册vue方法

☞ 根目录引入

import VueGlobal from '@/utils/vueGlobal.js'  // 导入全局vue方法
app.use(VueGlobal) // 使用vue方法
// vueGlobal.js 
//  全局方法引入
import { ref, reactive, toRefs, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { parseTime } from '@/utils/methods.ts'
export default {
  install(app) {
    // 全局注册常用的 Vue 函数
    app.config.globalProperties.$ref = ref
    app.config.globalProperties.$reactive = reactive
    app.config.globalProperties.$toRefs = toRefs
    app.config.globalProperties.$useRouter = useRouter
    app.config.globalProperties.$parseTime = parseTime
    app.config.globalProperties.$onMounted = onMounted
  }
}

☞ 使用

比如说我们呢在页面之中使用路由

// 之前我们使用类似于这样
import {useRouter} from 'vue-router'
const router=useRouter();
//现在我们使用 
import { getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance() // 获取当前实例
const router=proxy.$useRouter();

全局注册其他方法

☞ 根目录引入

import VueGlobal from '@/utils/vueGlobal.js'  // 导入全局vue方法
app.use(VueGlobal) // 使用
//  全局方法引入
import { parseTime } from '@/utils/methods.ts'
export default {
  install(app) {
    // 全局注册常用的 Vue 函数
    app.config.globalProperties.$parseTime = parseTime
  }
}

☞ 使用

在页面之中使用

import { getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance() // 获取当前实例
const router=proxy.$parseTime(xxx);
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。