如果你使用的是 webpack。您可以对应用程序中的不同语言环境数据进行代码拆分并动态加载。Webpack 1 仅支持 require.ensure() 而 webpack 2 也支持 System.import()。System.import 返回一个承诺,而 require.ensure 使用回调。https://webpack.github.io/docs/code-splitting.html
使用 System.import()
import { addLocaleData } from 'react-intl';
const reactIntlLocaleData = {
fr: () => System.import('react-intl/locale-data/fr'),
en: () => System.import('react-intl/locale-data/en')
};
function loadLocaleData(locale){
reactIntlLocaleData[locale]()
.then((intlData) => {
addLocaleData(intlData)
}
}
使用 require.ensure()
import { addLocaleData } from 'react-intl';
const reactIntlLocaleData = {
fr: () => require.ensure([], (require) => {
const frData = require('react-intl/locale-data/fr');
addLocaleData(frData);
}),
en: () => require.ensure([], (require) => {
const enData = require('react-intl/locale-data/en');
addLocaleData(enData);
})
};
function loadLocaleData(locale){
reactIntlLocaleData[locale]();
}
根据您的开发环境,上面的代码可能有效,也可能无效。它假设你使用 Webpack2 和 Babel 来编译你的代码。