webpack 带有外部配置文件的Vue js

kq0g1dla  于 2022-11-24  发布在  Webpack
关注(0)|答案(3)|浏览(147)

我想知道是否有可能让一个Vue应用程序读取一个外部配置文件。现在应该可以在外部文件中更改配置,而不必重新构建整个应用程序。有什么方法可以实现这个结果吗?现在我使用了一个单独的Vuex存储,但我无法在不重新构建整个应用程序的情况下更改配置。
我忘了说这个项目是用Vue CLI做的。

6yjfywim

6yjfywim1#

您可以从公共文件夹获取config.json,然后在解析回调中加载您的Vue应用程序
将配置密钥放入/public/config.json文件中

{
  "KEY": "value"
}

然后在/src/main.js文件中

fetch(process.env.BASE_URL + "config.json")
  .then((response) => response.json())
  .then((config) => {
       Vue.prototype.$config = config
       new Vue({
         router,
         store,
         render: (h) => h(App)
       }).$mount("#app")
  })

您将在应用程序范围内加载配置。然后,您只需使用

mounted() {
  this.$config.KEY // "value"
}

在Vue组件中
2022年11月23日更新(添加Vue 3版本):

// VUE 3 Version
const app = createApp(App)

fetch(process.env.BASE_URL + "config.json")
  .then((response) => response.json())
  .then((config) => {
    // either use window.config
    window.config = config
    // or use [Vue Global Config][1]
    app.config.globalProperties.config = config
    // FINALLY, mount the app
    app.mount("#app")
  })
lvmkulzt

lvmkulzt2#

我是这样做的:
使用所需的设置在公用文件夹中创建config.js文件:

window.VUE_APP_API_KEY = 'blahblahblah';

然后在public/index.html中,将以下行添加到head部分:

<script type="text/javascript">
    var cachebuster = Math.round(new Date().getTime() / 1000);
    document.write('<scr' + 'ipt type="text/javascript" src="<%= BASE_URL %>config.js?cb=' + cachebuster + '"></scr' + 'ipt>');
  </script>

然后在您的VUE应用程序中,您只需调用window.VUE_APP_API_KEY。简单、快速:)

1dkrff03

1dkrff033#

我有一个由节点提供的路由,它返回一个动态创建的JS文件,并定义了一个全局对象,我在其中存储配置。
index.html中:

<script type="text/javascript" src="config.js"></script>

node(服务器端)中:

app.get('/config.js', (request, reply) => {
    reply.header('Content-Type', 'application/javascript');
    reply.send(`MyConfig = ${JSON.stringify(config)}`);
  });

在组件中(或其他任何位置):

{
  data: () => ({
    someField: MyConfig.someField
  })
}

相关问题