首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >node.js中的ES6变量导入名称?

node.js中的ES6变量导入名称?
EN

Stack Overflow用户
提问于 2015-03-20 22:06:22
回答 8查看 70.3K关注 0票数 120

在使用ES6导入时,是否可以将某些内容导入到提供变量名称的模块中?

也就是说,我想在运行时根据配置中提供的值导入一些模块:

代码语言:javascript
复制
import something from './utils/' + variableName;
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-03-20 22:10:38

而不是使用import语句。importexport的定义方式是可静态分析的,因此它们不能依赖于运行时信息。

您正在寻找loader API (polyfill),但我不太清楚该规范的状态:

代码语言:javascript
复制
System.import('./utils/' + variableName).then(function(m) {
  console.log(m);
});
票数 70
EN

Stack Overflow用户

发布于 2016-04-10 21:40:48

虽然这实际上不是动态导入(例如,在我的情况下,我下面导入的所有文件都将由webpack导入并捆绑,而不是在运行时选择),但我一直使用的一个模式在某些情况下可能会有所帮助:

代码语言:javascript
复制
import Template1 from './Template1.js';
import Template2 from './Template2.js';

const templates = {
  Template1,
  Template2
};

export function getTemplate (name) {
  return templates[name];
}

或者:

代码语言:javascript
复制
// index.js
export { default as Template1 } from './Template1';
export { default as Template2 } from './Template2';


// OtherComponent.js
import * as templates from './index.js'
...
// handy to be able to fall back to a default!
return templates[name] || templates.Template1;

我认为我不能像使用require()那样容易地退回到默认值,如果我试图导入一个不存在的构造模板路径,它会抛出一个错误。

在这里可以找到require和import的很好的例子和比较:http://www.2ality.com/2014/09/es6-modules-final.html

有关从@iainastacio重新导出的优秀文档:http://exploringjs.com/es6/ch_modules.html#sec_all-exporting-styles

我很有兴趣听到关于这种方法的反馈:)

票数 37
EN

Stack Overflow用户

发布于 2016-09-21 21:26:59

您可以使用非ES6表示法来做到这一点。这是对我有效的方法:

代码语言:javascript
复制
let myModule = null;
if (needsToLoadModule) {
  myModule = require('my-module').default;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29168433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档