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
以两种方式工作。所以,我们目前正在使用这个。但是提前知道这一点可以让我从上周节省几个小时。