Javascript 将ES6模块导入全局范围

Javascript 将ES6模块导入全局范围,javascript,ecmascript-6,webpack,Javascript,Ecmascript 6,Webpack,TLDR:如何使模块(通过ES6语法导入)具有全局作用域(或在另一个类中引用导入的类) 我正在从一个没有正确实现(没有导出等)的包中导入一个模块,但是遇到了一些问题 我正在做的是使用var将模块设置为全局(不太好),例如 因为我需要在我的类中像这样使用它(模块控制此,并且类实例在全局范围内不可用,所以我不能像通常那样使用我的类): 这是可行的,但不是很好,因为我使用的是webpack,我更喜欢使用正确的es6语法 import Example from './example'; 然后在exa

TLDR:如何使模块(通过ES6语法导入)具有全局作用域(或在另一个类中引用导入的类)


我正在从一个没有正确实现(没有导出等)的包中导入一个模块,但是遇到了一些问题

我正在做的是使用
var
将模块设置为全局(不太好),例如

因为我需要在我的类中像这样使用它(模块控制
,并且类实例在全局范围内不可用,所以我不能像通常那样使用我的类):

这是可行的,但不是很好,因为我使用的是webpack,我更喜欢使用正确的es6语法

import Example from './example';
然后在
example.js中

export default Example = require('./node_modules/example/long_path_to_file.js');
但是这意味着它不再是全局范围的,我无法找到修复方法


我尝试过类似于
window.Example=Example
的方法,但它不起作用。

我做了一些测试,结果正确:

import './middleman';

// './middleman.js'
window.Example = require('./example.js').default
// OR
window.Example = require('./example.js').Example

// './example.js'
export function Example() {
  this.name = 'Example'
}
export { Example as default }

如果您使用的是
webpack
,则很容易进行设置。下面是一个如何实现它的简单示例

webpack.config.js

module.exports = {
  entry: 'test.js',
  output: {
    filename: 'bundle.js',
    path: 'home',
    library: 'home' // it assigns this module to the global (window) object
  }
  ...
}
some.html

另外,我建议看一下配置

我希望它能帮助你


感谢

为了澄清这一点,
example/long_path_to_file.js
正在设置一个变量
窗口。example
您想通过webpack使用它?
window.aaa=require(…)
\@RGraham该文件只导出了一些我需要使用的代码;我将其设置为
window.Example
,方法是在最外层范围内使用
var-Example
(不确定
strict
模式是否允许)。我需要它是全局的,因为这个模块接管了我的类中的上下文(并且es6类实例没有在全局范围中引用),那么@RoyiNamir就是全局的correct@RGraham我的第一个示例(使用
require
)已经可以使用了,但我想知道如何使用ES6Hey使模块全局化,这很有趣,但是输出文件是我的模块,而不是我要包含的小模块,我想使其成为全局的(比如
bundle.js
是我的模块,但我想
other.js
global,它位于
bundle.js
的顶部,通过
import
)@user32394023你可以像
home.mySmallModule
import './middleman';

// './middleman.js'
window.Example = require('./example.js').default
// OR
window.Example = require('./example.js').Example

// './example.js'
export function Example() {
  this.name = 'Example'
}
export { Example as default }
module.exports = {
  entry: 'test.js',
  output: {
    filename: 'bundle.js',
    path: 'home',
    library: 'home' // it assigns this module to the global (window) object
  }
  ...
}
<script>console.log(home)</script>
var home =  // main point
/*****/ (function(modules) blablabla)
...