Pat*_*rts 1 import export commonjs node.js ecmascript-6
对于由定义main的npm模块文件package.json,我正在考虑以下模式:
import Struct from './src/struct'
module.exports = Struct
module.exports.default = Struct
Run Code Online (Sandbox Code Playgroud)
为了支持CommonJS和ES6导入:
const Struct = require('my-module')
// or
import Struct from 'my-module'
Run Code Online (Sandbox Code Playgroud)
该公约是否有任何可能导致意外问题的弊端?
我要解决的问题是必须迫使软件包的使用者坚持使用ES6或CommonJS,因为这两种方法似乎都不太好用:
const Struct = require('my-module').default
// or
import * as Struct from 'my-module'
Run Code Online (Sandbox Code Playgroud)
在进一步考虑这一点之后,这样定义我的课程/src/struct.js会更好吗?
export default class Struct {
static get default () {
return Struct
}
...
}
Run Code Online (Sandbox Code Playgroud)
让我们看看Babel在您做什么时会做什么import foo from 'bar';:
'use strict';
var _bar = require('bar');
var _bar2 = _interopRequireDefault(_bar);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
Run Code Online (Sandbox Code Playgroud)
您会看到,根据导入模块的“类型”,Babel要么导入default导出,要么导入module.exports(因为require('bar')return module.exports。
这就是说,为了使您的模块可以导入为
const Struct = require('my-module')
// and
import Struct from 'my-module'
Run Code Online (Sandbox Code Playgroud)
您要做的就是
module.exports = Struct;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
497 次 |
| 最近记录: |