我正在try 将Vue 2升级到Vue 3.在Vue 2中,我们能够使用要求导入具有不同Vue设置的文件来保持main.js文件的良好组织.由于新的Vue和向Vue添加内容的方式,我不得不将所有内容复制并粘贴到main.js中.我还没能想出不这么做的最好办法.例如:

在第二季,

// in the main.js
import Vue from 'vue'
import App from './App.vue'

require('./bootstrap/shared')

// in the shared.js (this is the tinier of examples)
import Vue from 'vue'

const permissions = {
  me: null,
  user: null,
}

Vue.prototype.$permissions = permissions
Vue.prototype.$globals = Vue.observable({ site: {} })

现在在Vue 3中,我必须复制那个共享文件,然后直接粘贴到主服务器上,这样它就可以添加到应用程序中.

import { createApp, h, reactive } from 'vue'
import App from './App.vue'

const app = createApp({
  render: () => h(App),
})


const permissions = {
  me: null,
  user: null,
}

app.config.globalProperties.$permissions = permissions
app.config.globalProperties.$globals = reactive({ site: {} });

app.mount('#app');

我一直在try 寻找一种不使main.js过载的不同方法,但还没有找到方法.如果有人有什么建议的话,我会很高兴的.谢谢!

推荐答案

例如,您可以创建单独的文件globals.js并将其放入:

import { reactive } from 'vue';

export function setupGlobals(app) {
    const permissions = {
        me: null,
        user: null,
    };

    app.config.globalProperties.$permissions = permissions;
    app.config.globalProperties.$globals = reactive({ site: {} });
}

然后在您的Main.js中:

import { createApp, h } from 'vue'
import App from './App.vue'
import { setupGlobals } from './globals'

const app = createApp({
    render: () => h(App),
});

setupGlobals(app);

app.mount('#app');

Vue.js相关问答推荐

Vue 3 需要 main.js 中的文件

Vue3外部数组的响应性

Vue 3使用计算(computed)属性对象获取图像信息,在模板中呈现值时变为NaN

在 Vuejs 中更新 Chartjs 图表数据集

如何在vue js模板中添加foreach和for循环

如何在 Vue 中编译从外部 api 加载的模板

如何在 Laravel 中包含 Bootstrap-Vue

一个 div 组件中的 Vue.js 2.0 路由链接

如何在 Vue.js 中使用 MaterializeCss?

Vue.js 中 Chrome 和 Datalist 的性能问题

Vuetify / Offline离线图标

Vuetify 单选按钮未显示为选中状态

如何在 Vue.js 中获取组件元素的 offsetHeight?

Vue代理设置不起作用

交换数组项

如何从 keep-alive 中销毁缓存的 Vue 组件?

如何从 Vuex 操作访问 Vuex 状态属性?

检测 Vue-Router 导航Guards中的后退按钮

在~/components/AddPlaceModal.vue中找不到导出AddPlaceModal

将它们分开时将 Django 的 csrf_token 放入 Vuejs