繁体   English   中英

导出要与 require() 一起使用的 node.js 类

[英]Export node.js class to be used with require()

我正在导出以下类:

export default class Tester {
}

问题是,当我转译它并将其导入时:

const Tester = require('./dist/Tester');

问题是要使用 Tester 类,我需要像这样使用它:

const example = new Tester.Tester();

我怎样才能导出它,所以我这样做:

const example = new Tester();

奇怪的语法实际上是由您使用 2 种不同的导入/导出方言,es6 和 commonjs 引起的。 Babel 转译使您可以在同一系统中使用两者。

在 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的nodejs实现中

  • 导出是用module.exports编写的
  • 导入是用require()编写的

例子:

// -- 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():

您可以尝试修改导入块以使用对象解构:

const { Tester } = require('./dist/Tester');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM