(js):动态导入模块

时间:2020-04-13 11:49:19

标签: javascript import export es6-modules es6-module-loader

我正在构建项目结构,并创建了一些模块,我需要在该模块中根据用户所在的路线进行导入。

# my folder structure

modules
-- user
-- client
-- index
# my code 

// get constructor 
const  const constructor = await getConstructor( 'user' ); // get the constructor

// index
export const getConstructor = async ( module ) => {
    const constructor = await require(`./${module}`).create; // option 1 
    const constructor = await import(`./${module}`).then( constructor => constructor.create ); // option 2
    return constructor;
}


// module - user
const create = ( data ) => {
    // behavior
    // ...

}

export {
    create,
    delete,
    otherFunctions
}

我的问题是,就性能而言,动态导入create函数的最佳方法是什么,无论是选项1还是2,甚至还有另一种方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为您应该看一下es-module loader,它是管理异步导入“延迟加载”的一种方式,并且就性能而言,我认为这也是一个很好的解决方案。这导致我们选择第二种方法。

如果您使用的是Webpack,则可以看一下Code splitting这个概念。