【electron-todo】【bug】vue.js3.0 + typescript 挂载全局对象

electron-todo系列文章目录



前言

最近在学习electron,想要做一个TODO list的应用,第一篇文章也不知道怎么写,就随便划一下了,这里就写一下遇见的第一个bug


一、问题背景

vue.js 最近升级到了3.0的预览版,然而很多API都和原来的2.x版本有较大的改动。再加上我的开发使用的是typescript,文档和说明就更少,总之也是折腾了一段时间才搞定这个bug。

二、不同版本Vue引入全局对象

首先放上官方给出的文档
Vue.js 2.x

import Vue from 'vue'
import App from './App.vue'

Vue.config.ignoredElements = [/^app-/]
Vue.use(/* ... */)
Vue.mixin(/* ... */)
Vue.component(/* ... */)
Vue.directive(/* ... */)

// 2.x版本中使用 Vue.prototype挂载
Vue.prototype.customProperty = () => {}

new Vue({
  render: h => h(App)
}).$mount('#app')
Vue.js 3.0
import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)

app.config.isCustomElement = tag => tag.startsWith('app-')
app.use(/* ... */)
app.mixin(/* ... */)
app.component(/* ... */)
app.directive(/* ... */)

// 3.x版本中使用app.config.globalProperties进行挂载
app.config.globalProperties.customProperty = () => {}

app.mount(App, '#app')

三、bug的复现和解决

代码如下(示例):

// 路径 ./a.ts
const a = new Date();
export default a;

// 路径 ./main.ts
// ...
app.config.globalProperties.$a = a;
// ...

因为使用的是typescript,所以会出现找不到$a的情况报错信息如下:
在这里插入图片描述
再参考一下官网上的文档,发现可以将$a变成一个匿名函数,调用$a就可以得到a对象,所以代码更改一下:

app.config.globalProperties.$a = () => {
  return a;
};

使用时就像这样:this.$a().getTime()就可以正常使用,bug得以解决

最后

没什么写博客的经验,可能会有一些逻辑不通的地方,还望指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OriginCoding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值