【问题标题】:Using an external global variable file that is not bundled使用未捆绑的外部全局变量文件
【发布时间】:2018-05-22 22:56:41
【问题描述】:

我有一个用于国际化的 JS 文件。我希望能够将此 JS 文件传递​​给客户端以供他们编辑,而无需我重新构建整个项目。

目前我将此文件保存在静态文件夹中,以便在构建后将其转移到我的 dist 文件夹(我使用的是 vue-cli-webpack 模板)。

translation.js

const messages = {
  en: {
    message: {
      welcome: 'Welcome',
    },
  },
  fr: {
    message: {
      welcome: 'Bonjour',
    },
  },
};

export default messages;

我在我的 main.js 中导入如下:

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import App from './App';

import messages from '../static/translation';

Vue.use(VueI18n);

const i18n = new VueI18n({
  locale: 'en', // set locale
  messages, // set locale messages
});

/* eslint-disable no-new */
new Vue({
  i18n,
  el: '#app',
  components: { App },
  template: '<App/>',
});

虽然在我的开发环境中,这正是我想要的热重载(更改 translation.js 中的字符串并更新我的应用程序),但是一旦我构建了应用程序并将其放在生产站点上,它就不再热了重新加载。

我该如何实现这一目标?

【问题讨论】:

    标签: javascript webpack vue.js internationalization vue-i18n


    【解决方案1】:

    这是我实现预期结果的方式:

    在我的 Index.html 中,我包含以下静态 js 文件:

    <body>
      <div id="app"></div>
      <script src="/static/translation.js"></script>
      <!-- built files will be auto injected -->
    </body>
    

    translation.js文件如下:

    const messages = {
      en: {
        title: {
          test_page: 'Test Page Title',
        },
      },
    };
    
    window.messages = messages;
    

    main.js 修改如下:

    import Vue from 'vue';
    import VueI18n from 'vue-i18n';
    import App from './App';
    
    Vue.use(VueI18n);
    
    const i18n = new VueI18n({
      locale: 'en', // set locale
      messages: window.messages, // set locale messages
    });
    
    /* eslint-disable no-new */
    new Vue({
      i18n,
      el: '#app',
      components: { App },
      template: '<App/>',
    });
    

    这允许我在全局范围内使用它:

    <template>
      <div class="test-parent">
        <h1>{{ $t('title.test_page') }}</h1>
      </div>
    </template>
    

    并且我对 translation.js 文件所做的任何更改都会显示在生产环境中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2017-11-27
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多