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