Vue.js 如何在条目JS中包含JS并从其他组件访问它
我希望能够在我的Vue组件中使用Socket.IO实例,我不想在每个组件文件中从“Socket.IO client”导入IO,所以我想我应该能够在“main.js”文件中导入它,并在其他任何地方使用它 到目前为止,我已经看到了几个答案,但似乎没有一个有效 我试着包括Vue.js 如何在条目JS中包含JS并从其他组件访问它,vue.js,socket.io,vuejs2,vue-router,vue-cli,Vue.js,Socket.io,Vuejs2,Vue Router,Vue Cli,我希望能够在我的Vue组件中使用Socket.IO实例,我不想在每个组件文件中从“Socket.IO client”导入IO,所以我想我应该能够在“main.js”文件中导入它,并在其他任何地方使用它 到目前为止,我已经看到了几个答案,但似乎没有一个有效 我试着包括 import io from 'socket.io-client' ... var sock = io('localhost:3000') export const globalStore = new Vue({ data:
import io from 'socket.io-client'
...
var sock = io('localhost:3000')
export const globalStore = new Vue({
data: {
sock: sock
}
})
在我的main.js中
import {globalStore} from '../main.js'
const SOCK = globalStore.sock
但我还是会
Uncaught ReferenceError:对象上未定义sock。登录
当我试着去做
SOCK.emit()
我希望能够包含一次JS文件(不仅仅是socket.io),并从任何地方调用它。您可以将您的sock绑定到VueJS原型:
// main.js file
import Vue from 'vue'
import io from 'socket.io-client'
const sock = io('localhost:3000')
Vue.prototype.$sock = sock
new Vue({
...
})
然后,您可以在组件中访问它,如下所示:
export default {
created () {
console.log(this.$sock)
}
}
谢谢,这对我的要求起了作用,但我发现我需要的不止这些。当我在组件中使用它时,它可以工作,但如果我想在外部JS文件中使用它,我无法访问它。例如,我的'index.vue'中包含了“auth.js”,我将登录详细信息传递给一个'auth.js',在那里进行实际的身份验证。如何在外部JS中使用此$sock。