【问题标题】:How can i include a JS in entry js and access it from other components如何在入口 js 中包含 JS 并从其他组件访问它
【发布时间】:2019-01-25 16:06:07
【问题描述】:

我希望能够在我的 Vue 组件中使用 Socket.IO 实例,我不想在每个组件文件中都使用import io from 'socket.io-client',所以我认为我应该能够将它导入到我的“main. js”文件并在其他任何地方使用它。

到目前为止,我已经看到了几个答案,但似乎没有一个有效

我已尝试包含

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 is not defined at Object.login

当我尝试做的时候

SOCK.emit()

我希望能够包含一个 JS 文件(不仅仅是 socket.io)一次,然后从任何地方调用它。

【问题讨论】:

    标签: vue.js socket.io vuejs2 vue-router vue-cli


    【解决方案1】:

    你可以将你的 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 文件中使用它,我无法访问它。例如,我有“auth.js”,它包含在我的“index.vue”中,我将登录详细信息传递给完成实际身份验证的“auth.js”。如何在外部 JS 中使用 this.$sock。
    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 2016-08-19
    • 2020-03-11
    • 1970-01-01
    • 2017-04-23
    • 2018-06-28
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多