如何在vue.js项目的main.js文件中导入js类并在所有组件中使用它而不是在每个组件中导入?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在vue.js项目的main.js文件中导入js类并在所有组件中使用它而不是在每个组件中导入?相关的知识,希望对你有一定的参考价值。

我已经编写了一些我想在我的vue.js项目的app.js / main.js文件中导入的JS类,以便我可以在组件中实例化它们。现在我必须在我需要单独的类的所有组件中导入相同的JS类。

我已尝试在main.js文件中导入,但组件无法识别它。

在main.js文件中,我导入如下

import Permissions from './Permissions'

但是,当我想在我的组件中实例化Permissions类时

data() { permissions: new Permission({ some object properties... }) }

该组件不知道Permissions是什么。

如何让组件知道Permissions类是什么?

答案

要以vue方式执行此操作,您可以创建自己的插件或mixin。查看详细说明here

因此,您可以在permissions-plugin.js中创建权限插件

import Permissions from './Permissions'

const PermissionsPlugin = {
  install(Vue, options) {
    // This adds the $getPermissions method to all instances
    Vue.prototype.$getPermissions = function(properties) {
      return new Permission({
        some object properties...
      })   
    }
  }
};

然后你必须告诉vue使用你的插件:

import Vue from 'vue'
import PermissionsPlugin from './permissions-plugin.js'
import App from './App.vue'

// The plugin is loaded here.
Vue.use(PermissionsPlugin)

new Vue({
  el: '#app',
  render: h => h(App)
});

最后,现在从任何组件,你应该能够使用你的功能,如:

this.$getPermissions(properties)

以上是关于如何在vue.js项目的main.js文件中导入js类并在所有组件中使用它而不是在每个组件中导入?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vue.js 中导入 ipcRenderer? __dirname 未定义

如何使用 laravel 5.7 和 vue JS 在 mysql 中导入 excel 文件

如何使用 axios 在 Vue Js 中导入 json 数据

如何在 Vue 组件中导入外部函数?

尝试在 Django 应用程序的 js 文件中导入 vue.js 时出现“未捕获的语法错误:无法在模块外使用 import 语句”

有没有更好的方法或在 vue.js 中导入 mixins