gpt4 book ai didi

javascript - 运行构建 :electron in Vue CLI 3? 后,如何将静态 config.json 文件中的值读取到 Vue 文件中的 TypeScript

转载 作者:行者123 更新时间:2023-12-03 11:20:22 25 4
gpt4 key购买 nike

下午好。

我想知道是否可以将 config.json 文件添加到可以在运行时读取的 Vue CLI 3 项目中,无论是在开发期间还是在生产期间。

config.json 文件将包含一些字符串,应用程序可以使用这些字符串来动态更改内容,例如显示给用户的视频文件和打印机的 IP 地址。

// config.json

{
"brand": "eat",
"printerIP": "192.168.0.4"
}

我试图将文件放在 Assets 文件夹和公用文件夹中。我尝试使用 import 和 require 语句将它导入到 App.vue 的脚本 lang="ts"元素中。我正在使用 vue-property-decorator。
// App.vue (<script lang="ts">)

const config = require('../public/config.json');

OR

import config from '../public/config.json';

我已经通过使用 axios 像 API 一样处理它并使用例如 config.brand 简单地访问变量来访问这些值。
// App.vue (<script lang="ts">)

import axios from 'axios';

@Provide() private brand: string = "";

axios
.get('.config.json')
.then(response => {
this.brand = response.data.brand;
})

OR

this.brand = config.brand;

不幸的是,数据仅在构建时读取并编译成缩小的 JavaScript。这意味着即使用户在构建应用程序后更新了 config.json 中的变量,应用程序也不会更新。我需要能够访问构建文件中的 config.json,更新一个值,然后让应用程序在运行时读取新值,而无需再次构建项目。我想知道是否有可能做到这一点。

您可以提供的任何帮助将不胜感激。

最佳答案

您认为应该将运行时配置放在 public/ 下是对的。文件夹,但不要导入它们。导入将在构建期间得到解决,其结果将通过 webpack。相反,请使用 fetch通过 HTTP 加载它们。

Vue 指定 public文件夹作为放置静态 Assets 的地方,这些 Assets 应该绕过 webpack,只需复制到 dist/ .您可以在运行时使用如下 HTTP 请求访问它们:

const getRuntimeConfig = async () => {
const runtimeConfig = await fetch('/config');
return await runtimeConfig.json()
}

如果您想在多个 Vue 组件中使用这些运行时配置而不进行多次提取,那么在驱动您的 Vue 应用程序的主要 Javascript 文件中进行一次提取(例如 src/main.js )并通过 Vue mixins 共享结果,如下所示:
  Vue.mixin({
data() {
return {
// Distribute runtime configs into every Vue component
BRAND: BRAND,
PRINTER_IP: json.printerIP
}
},
});

关于javascript - 运行构建 :electron in Vue CLI 3? 后,如何将静态 config.json 文件中的值读取到 Vue 文件中的 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52630580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com