js require引入如何按动态模块引入

A.js文件
module.exports = {a,b,c}
B.js文件
const {a} = require('A.js')
这样可以只引入A文件的a模块;
该怎么动态引入模块呢?
伪代码:
name = 'b'
const {name} = require(A.js)
name就是b模块的内容,这里的是一个方法片段,name是从外部传来的,不确定是哪一个模块;因为A文件里会有很多模块,不想一次性全部引入再读取部分;
求大大有没有高级的用法,百度查了很多没找到这样的用法.

阅读 6.8k
2 个回答

这不是靠语法能解决的。

你第一个示例可以只引入a是因为打包工具的treeshake技术,分析了你的代码,按需打包。这种分析是静态分析,建立在已经明确了引入的依赖前提上。

“不想一次性加载再读取部分”,这意味着打包工具得把那个模块拆散,每个暴露都拆分成一个js,然后还得有一个runtime来负责运行时根据你传入的变量创建script标签引入该js。

这样的功能依托webpack可以实现,但这种边缘需求估计是没有人去开发插件的

const name = 'b';
const {[name]: b} = require('A.js');

console.log(b);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题