Javascript 网页包。是否可以进行与入口点相关的导入?

Javascript 网页包。是否可以进行与入口点相关的导入?,javascript,ecmascript-6,webpack,bundling-and-minification,Javascript,Ecmascript 6,Webpack,Bundling And Minification,我有多个入口点的应用程序,由Webpack1.13.2捆绑。我还使用ES2015模块和带有es-2015预设的巴别塔 entry: { entry1: "app/somechunk/entry1.js", entry2: "app/somechunk2/entry2.js" } 我需要特定模块的条件导入。导入应取决于入口点。大概是这样的: if(entry1){ import locale from 'app/somechunk/localeDictio

我有多个入口点的应用程序,由Webpack1.13.2捆绑。我还使用ES2015模块和带有es-2015预设的巴别塔

entry: {
        entry1: "app/somechunk/entry1.js",
        entry2: "app/somechunk2/entry2.js"
}
我需要特定模块的条件导入。导入应取决于入口点。大概是这样的:

if(entry1){
    import locale from 'app/somechunk/localeDictionary1.js'
} else {
    import locale from 'app/somechunk2/localeDictionary2.js'
}

我怎样才能做到呢?

嗯,这是一个经常出现的问题。javascript中不能有条件导入,依赖项是模块的静态属性。您基本上有两种选择:

使用 使用通用模块并为其提供配置程序功能。例如:

// locale.js
export var dictionary = {};
export function setDictionary(dict) {
  dictionary = dict;
}

// locale-en.js
import { setDictionary } from "./locale";
setDictionary({ yes: "yes" });

// locale-hu.js
import { setDictionary } from "./locale";
setDictionary({ yes: "igen" });

// entries/entry-hu.js
import "../locales/locale-hu";
import "../application";

// entries/entry-en.js
import "../locales/locale-en";
import "../application";

// application.js
import { dictionary } from "./locales/locale";
console.log(dictionary);
静态配置使用 为条目配置单独的生成任务,并使用以下配置它们:

{
    entry: "entry.js",
    resolve: {
        alias: {
            "locale": "/locale/locale-en.js"
        }
    }
    ...
}

也许我不明白你的问题,但是条目文件已经被隔离了,毕竟它们是独立的文件。在每个条目中,只要导入所需的特定文件,就不需要if条件。@MarcGreenstock。我有translator.js和多个本地化词典。每个入口点都需要translator.js。我想根据入口点有条件地导入本地化词典。没有词典,翻译器是无用的,所以我可以在我试图使用翻译器的每个文件中使用翻译器导入词典。(每个模块有2个导入)。有很多模块,这将是痛苦的。