[英]Webpack namespacing es6 modules
由于打字稿,babel和webpack的兼容性问题,我不得不使用export class Test {}
语法,而不是export default class Test {}
。 它解决了我所有与打字稿有关的问题,但使webpack改为对对象上的所有内容进行命名空间。
我正在让webpack生成umd,并正在通过requirejs测试include。
但是,不是直接传递函数,而是获取具有属性的对象。 这不会在我的真实应用中显示。
{
Test: function Test() {}
}
webpack.config.js:
module.exports = {
entry: './test.js',
output: {
filename: 'a.js',
libraryTarget: 'umd'
},
module: {
loaders: [{
test: /\.js$/, loader: 'babel-loader'
}]
}
};
.babelrc:
{
"presets": ["es2015"]
}
我不确定我是否理解正确,但是经过大量实验,我发现在TypeScript中使用模块的最简单方法是在源文件中简单地使用ES6语法。
// src/foo/Foo.ts
export class Foo {}
// src/bar/Bar.ts
import {Foo} from '../foo/Foo';
export class Bar extends Foo {}
这样,您的源文件就可以与输出模块格式无关。
对于大型库,可以将index.ts
保留在每个“命名空间”的根目录下,这将在导出模块时为您提供更大的灵活性:
// src/widgets/FooWidget.ts
export class FooWidget {}
// src/widgets/BarWidget.ts
export class BarWidget {}
// src/widgets/index.ts
export * from './FooWidget';
export * from './BarWidget';
// src/index.ts
import * as widgets from './widgets';
import * as badgers from './badgers';
export {
widgets,
badgers
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.