vue2升级vue3:vue3创建全局属性和方法
vue2.x挂载全局是使用Vue.prototype.$xxxx=xxx的形式来挂载,然后通过this.$xxx来获取挂载到全局的变量或者方法
在vue3.x这种方法显然是不行了,vue3中在setup里面我们都获取不到this,官方提供了globalProperties
import { createApp } from 'vue'
import App from './App'
import router from '@router/index'
const app = createApp(App).app.use(router).mount('#app')
app.config.globalProperties.$demoe = 'demo'
注意:千万不能这样子写:
createApp(App).config.globalProperties.$httpUrl = 'https://www.baidu.com'
createApp(App).use(router)
.use(store)
.use(elementPlusUI)
.mount('#app') //或者是这样
const app = createApp(App)
createApp(App).config.globalProperties.$httpUrl = 'https://www.baidu.com'
app.use(router)
.use(store)
.use(elementPlusUI)
.mount('#app')
第一种相当于我们直接调用了两次createApp(App),
最后调的那次里面压根就没有我们需要配置的全局变量,会返回undefined
在 compose api 如何用?
只需要从vue引入一个方法即可,不能在页面中使用this获取
import { defineComponent, getCurrentInstance, onMounted } from "vue"
export default defineComponent({
setup (props, {emit}) {
// console.log(this)
const { appContext : { config: { globalProperties } },proxy} = getCurrentInstance()
const { ctx, proxy } = getCurrentInstance()
console.log(globalProperties.$demo)
return {
proxy
}
}
})
ctx和proxy都可以访问到定义的全局方法,但是ctx只能在本地使用,线上环境使用proxy
不管怎么样,在vue3项目,个人不推荐关在全局变量与属性。
参考文章:
vue3创建全局属性和方法 https://segmentfault.com/a/1190000040224048
vue3中挂载全局变量 https://blog.csdn.net/weixin_43090018/article/details/117222606
转载本站文章《vue2升级vue3:vue3创建全局属性和方法》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/vue3/8861.html
vue2升级vue3:vue3创建全局属性和方法的更多相关文章
- uni-app全局属性和方法
全局变量和全局方法是软件开发中常用的技术点! 实现方式大致分为: 1.vuex实现,值变动灵活 2.建立js文件,页面内引用 3.挂载vue实例后使用 4.小程序中的globalData 5.本地存储 ...
- JavaScript常用全局属性与方法
最近,在学习JavaScript,Java作域链包含全局,记录下常用的全局属性与方法,就当是知识的积累,未列出全部,如需查看全部可参考JS相关的API文档. 常用的全局属性: 全局属性 作 ...
- JS对象—数组总结(创建、属性、方法)
JS对象—数组总结(创建.属性.方法) 1.创建字符串 1.1 new Array() var arr1 = new Array(); var arr2 = new Array(6); 数组的长度为6 ...
- JS对象—字符串总结(创建、属性、方法)
1.创建字符串 1.1 new String(s) String和new一起使用,创建的是一个字符串对象,存放的是字符串s的表示. 1.2 String(s) ...
- JS对象—对象总结(创建、属性、方法)
1.创建对象Object 1.1 字面量的方式创建 1.2 new Object() 1.3 构造函数创建 1.4 工厂模式 1.5 Object.create() ES5新增方法 Object. ...
- javascript js全部的 全局属性 和 方法-window
window method: open(URL,窗口名称,窗口风格)//打开一个新的窗口,并在窗口中装载指定URL地址的网页 close()//close方法用于自动关闭浏览器窗口 alert(提示字 ...
- ts 在Function上创建静态属性和方法
interface IMessage { (value: any): void; success(): void; error(): void; version: string; } const Me ...
- JavaScript 全局属性/函数
JavaScript 全局 JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示 ...
- JavaScript全局属性/函数
JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示某个值是不是数字值. und ...
- uniapp项目vue2升级vue3简单记录
看到好多开源项目都升级了vue3,看文章说vue3性能升级很多,而且组合式api很香,遂把最近开发的自助洗车app升级下,在此记录下出现的问题. uniapp升级vue3官方指南 我是先去vue官网看 ...
随机推荐
- Python 模块:创建、导入和使用
什么是模块? 将模块视为代码库.模块是一个包含一组函数的文件,您想要在应用程序中包含这些函数. 创建一个模块 要创建一个模块,只需将要包含在其中的代码保存在扩展名为 .py 的文件中: 示例:将以下代 ...
- 简单理解cookie/session机制(转)
http://www.woshipm.com/pd/864133.html cookie与session应用于互联网中的一项基本技术--会话(用户与客户端的交互)跟踪技术,用来跟踪用户的整个会话.简单 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-25-处理单选和多选按钮-中篇
1.简介 上一篇中宏哥讲解和介绍的单选框有点多,而且由于时间的关系,宏哥决定今天讲解和分享复选框的相关知识. 2.什么是单选框.复选框? 单选按钮一般叫raido button,就像我们在电子版的单选 ...
- Codeforces Round 909 (Div3)(本菜鸟只补到了E)
Codeforces Round 909 (Div.3) A. Game with Integers 水题,就是可以被3整除的输出"Second",不能被3整除的输出"F ...
- springCore完整学习教程2,入门级别
上集说到:2. 3,咱们从2.3集开始 2. Externalized Configuration 2.3. External Application Properties Spring Boot会自 ...
- [scrapy]一个简单的scrapy爬虫demo
一个简单的scrapy爬虫demo 爬取豆瓣top250的电影名称+电影口号 使用到持久化流程: 爬虫文件爬取到数据后,需要将数据封装到items对象中. 使用yield关键字将items对象提交给p ...
- [USACO2022OPEN S] COW Operations S
题目描述 Bessie 找到了一个长度不超过 \(2 \cdot 10^5\) 且仅包含字符 'C','O' 和 'W' 的字符串 \(s\).她想知道是否可以使用以下操作将该字符串变为单个字母 'C ...
- AtomicArray
AtomicInteger ai = new AtomicInteger(1); //1.获取值 System.out.println("ai.get = "+ai.get()); ...
- Chrome扩展的核心:manifest 文件(中)
大家好,我是 dom 哥.我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星 . 在上一篇中已经完成了 Chrome 扩展的雏形,本篇接着介绍 manifest 中的可选字段,完 ...
- Socket编程和实现聊天室
一.HTTP协议的socket通信 1.server.py # 服务端 import sys import socket ip_point = ('127.0.0.1',9999) sk = sock ...