Javascript 导出要与require()一起使用的node.js类
我正在导出以下类:Javascript 导出要与require()一起使用的node.js类,javascript,node.js,webpack,ecmascript-6,babeljs,Javascript,Node.js,Webpack,Ecmascript 6,Babeljs,我正在导出以下类: export default class Tester { } 问题是,当我传输此文件并将其导入时: const Tester = require('./dist/Tester'); 问题是要使用Tester类,我需要这样使用它: const example = new Tester.Tester(); 如何将其导出,因此我可以: const example = new Tester(); 您可以尝试修改导入块以使用对象分解: const{Tester}=requir
export default class Tester {
}
问题是,当我传输此文件并将其导入时:
const Tester = require('./dist/Tester');
问题是要使用Tester类,我需要这样使用它:
const example = new Tester.Tester();
如何将其导出,因此我可以:
const example = new Tester();
您可以尝试修改导入块以使用对象分解:
const{Tester}=require('./dist/Tester');
这种奇怪的语法实际上是由于您使用了两种不同的导入/导出方言es6和commonjs造成的。Babel transpilation使您能够在同一系统中同时使用这两种功能
在es6中
- 导出使用
export
- 导入使用
import
// -- es6
// tester.js
export default class Tester {} // default export
export const SomeConsts = {} // named export
// main.js
import Tester, { SomeConsts } from "./tester";
// -- commonjs
// tester.js
class Tester {}
const SomeConsts = {}
module.exports = { Tester, SomeConsts } // arbitrary export
// main.js
const TesterModule = require("./tester.js");
const Tester = TesterModule.Tester;
const SomeConsts = TesterModule.SomeConsts;
// --or--
const { Tester, SomeConsts } = require("./tester.js");
在nodejs中实现commonjs
- 导出是使用
模块编写的。导出
- 导入使用
require()
// -- es6
// tester.js
export default class Tester {} // default export
export const SomeConsts = {} // named export
// main.js
import Tester, { SomeConsts } from "./tester";
// -- commonjs
// tester.js
class Tester {}
const SomeConsts = {}
module.exports = { Tester, SomeConsts } // arbitrary export
// main.js
const TesterModule = require("./tester.js");
const Tester = TesterModule.Tester;
const SomeConsts = TesterModule.SomeConsts;
// --or--
const { Tester, SomeConsts } = require("./tester.js");
编辑:
如果希望Tester
类作为导出的根,并且仍然希望导出SomeConsts
,则必须使SomeConsts
成为Tester
类的一部分
// -- commonjs
// tester.js
class Tester {
static SomeConsts = {}
}
module.exports = {}
// main.js
const Tester = require("./tester.js")
const TesterInstance = new Tester():
您正在使用哪个版本的节点?您是在节点端使用babel进行传输,还是在节点中使用本机EJS支持?我明白了,但假设我有一个index.js文件,可以导出Tester和SomeConsts。有没有办法使Tester成为“默认”导出,这样当我需要它时,我就可以执行const TesterModule=require(“./Tester.js”);const x=新的TesterModule()@johnnyshrewd在module.exports中只能导出1个根对象。如果你想保留一些常量,你必须让它成为Tester的一部分tester.js类tester{static SomeConsts={}}module.exports=tester//main.js const tester=require(“./tester.js”)const TesterInstance=new tester()```