【问题标题】:import from ES6 module to legacy js code从 ES6 模块导入旧版 js 代码
【发布时间】:2016-02-12 15:36:48
【问题描述】:

我使用 babel.js 并在我的代码中添加了一个新模块 foo

foo.js:

export function foo(number) {
    return number + 42;
}

还有一堆大的旧文件,其中所有内容都是全局的。我需要从该遗留代码中调用一个 foo 函数。

bar.js:

 ...
 var result = foo(0); 
 ...

但我不能只导入 foo,因为我的 bar.js 将是一个模块,并且无法从其他旧代码中获取。有没有办法导入模块 并保留我的 bar.js 全局?

【问题讨论】:

  • “但我不能只导入 foo,因为我的 bar.js 将是一个模块,无法从其他旧代码中获取” 您必须以某种方式导入模块文件如果你想使用它。上下文是什么?在第一种情况下如何“全局”使用 bar.js。
  • 您使用的是哪个模块加载器?你转译为 commonjs 吗?
  • 我使用 webpack。在 bar.js 中有很多全局变量和函数在应用程序的其他部分使用。

标签: javascript ecmascript-6 babeljs es6-module-loader


【解决方案1】:

我最近遇到了类似的问题。我最终用遗留代码中需要的所有东西污染了window 对象。

为此,我创建了单独的 register.js 模块并将其包含在我的 webpack 构建中:

import ClassA from './ClassA'
import ClassB from './ClassB'
import * as utils from './utils'

Object.assign(window, utils)
Object.assign(window, {ClassA, ClassB})

【讨论】:

  • 很好的解决方案!
猜你喜欢
  • 2019-03-27
  • 2016-04-09
  • 2016-08-09
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 2016-09-16
  • 1970-01-01
相关资源
最近更新 更多