Javascript Vue 3与Composition API不同的对象结构,用于在开发版本或生产版本中使用Vue CLI 4获取上下文/全局属性?

Javascript Vue 3与Composition API不同的对象结构,用于在开发版本或生产版本中使用Vue CLI 4获取上下文/全局属性?,javascript,vue.js,vuejs3,vue-cli,vue-cli-4,Javascript,Vue.js,Vuejs3,Vue Cli,Vue Cli 4,为什么来自getCurrentInstance()的对象结构与组合API在开发或生产构建中的结果不同 我使用以下模式将全局变量添加到我的Vue实例: 导出默认值{ 安装(应用程序){ const\u projectFile=新项目文件(应用程序); //*这将有助于访问其他文件(插件)中的存储 app.config.globalProperties.$projectProperties=\u projectFile; //*这将使用此。$store公开存储在组件中的存储 app.provide

为什么来自
getCurrentInstance()
的对象结构与组合API在开发或生产构建中的结果不同


我使用以下模式将全局变量添加到我的Vue实例:

导出默认值{
安装(应用程序){
const\u projectFile=新项目文件(应用程序);
//*这将有助于访问其他文件(插件)中的存储
app.config.globalProperties.$projectProperties=\u projectFile;
//*这将使用此。$store公开存储在组件中的存储
app.provide(“$projectProperties”,_projectFile);
}
};

我在我的
main.js
中启动了这个程序,并使用了一堆其他的东西(这一切都很好

从“/App.vue”导入应用程序;//主Vue组件
常量应用程序=createApp(应用程序)
.使用(项目财产);
app.mount(“#app”);

真正的怪异从这里开始。。尝试从
/App.vue
中的
设置()
(Composition API)访问我的GlobalProperty时。运行时,我为
getCurrentInstance()
获得了不同的对象结构:

  • vue cli服务服务
    (开发)
  • vue cli服务构建
    (生产)

  • /App.vue

    setup(){
    const_instance=getCurrentInstance();
    onMounted(异步函数(){
    //此选项仅在vue cli服务中有效
    const{$store,$router,$projectProperties}=\u instance.ctx;
    //这将适用于vue cli服务和构建
    const{$store、$router、$projectProperties}=\u instance.appContext.app.config.globalProperties;
    //下面是其他不相关的代码
    });
    },
    
    因此,这在我的生产构建中不起作用:
    const{$store,$router,$projectProperties}=\u instance.ctx

    我不明白为什么
    getCurrentInstance().ctx
    指向
    cli服务的
    globalProperties
    对象,但在
    cli服务构建中不包含globalProperty
    <代码>ctx
    公开的全局属性


    如果您在开发和生产模式中都需要全局属性,那么您需要坚持使用
    \u instance.appContext.app.config.globalProperties

    ,这一点很清楚!添加到Vue文档中可能会很有趣。您是对的
    \u instance.appContext.app.config.globalProperty
    以两种方式工作。所以,我们目前正在使用这个。但是提前知道这一点可以让我从上周节省几个小时。