IIFE 函数中的新 Class 现在可以与 webpack 一起使用
New Class from IIFE function now working with webpack
所以我有这个功能。我试图从这个 js 文件外部获取一个新的 Test('selector', {}),它是未定义的,我似乎无法弄清楚为什么。
我真的需要将它附加到 window 对象吗?
有人可以解释一下吗?
提及它适用于同一个文件。
let Test = ((window, document, undefined) => {
class test {
constructor(selector, options) {
this.selector = document.querySelector(selector);
this.options = options;
}
}
return test;
})(window, document);
这是我的 webpack 配置文件:
module.exports = {
entry: './src/test.js',
module: {
loaders: [
{
test: /\.js?$/,
exclude: / (node_modules) /,
loader: 'babel-loader',
query: {
presets: ['es2015', 'stage-0']
}
}
]
},
output: {
path: __dirname + '/src',
filename: 'test.min.js'
}
}
我显然误解了 webpack 在做什么。 Webpack 将所有 JavaScript 文件转换为全局命名空间中不可用的模块。这就是为什么我们需要使用 require/import 来加载它们。在上面的例子中,测试函数从未被加载并且没有被定义。 JavaScript 的默认范围性质不再存在。
所以我有这个功能。我试图从这个 js 文件外部获取一个新的 Test('selector', {}),它是未定义的,我似乎无法弄清楚为什么。
我真的需要将它附加到 window 对象吗? 有人可以解释一下吗?
提及它适用于同一个文件。
let Test = ((window, document, undefined) => {
class test {
constructor(selector, options) {
this.selector = document.querySelector(selector);
this.options = options;
}
}
return test;
})(window, document);
这是我的 webpack 配置文件:
module.exports = {
entry: './src/test.js',
module: {
loaders: [
{
test: /\.js?$/,
exclude: / (node_modules) /,
loader: 'babel-loader',
query: {
presets: ['es2015', 'stage-0']
}
}
]
},
output: {
path: __dirname + '/src',
filename: 'test.min.js'
}
}
我显然误解了 webpack 在做什么。 Webpack 将所有 JavaScript 文件转换为全局命名空间中不可用的模块。这就是为什么我们需要使用 require/import 来加载它们。在上面的例子中,测试函数从未被加载并且没有被定义。 JavaScript 的默认范围性质不再存在。