目前,我在自己的文件中有4个子类。我要求他们都在同一个文件中。我想知道我是否可以在一个模块中包含所有这四个类。目前,我这样导入它们
var Jack = require('./Jack.js');
var JackInstance = new Jack();
var Jones = require('./Jones.js');
var JonesInstance = new Jones();
我想像这样导入它们
var People = require('./People.js');
var JackInstance = new People.Jack();
甚至
var Jack = require('./People.js').Jack;
var JackInstance = new Jack();
我的课程定义如此
class Jack{
//Memeber variables, functions, etc
}
module.exports = Jack;
答案 0 :(得分:57)
您可以导出多个这样的类:
e.g。的 People.js 强>
class Jack{
//Member variables, functions, etc
}
class John{
//Member variables, functions, etc
}
module.exports = {
Jack : Jack,
John : John
}
正如您正确提到的那样访问这些类:
var People = require('./People.js');
var JackInstance = new People.Jack();
var JohnInstance = new People.John();
答案 1 :(得分:56)
您也可以使用destructuring assignments(本地从Node.js v6.0.0开始支持)以更短的形式执行此操作:
// people.js
class Jack {
// ...
}
class John {
// ...
}
module.exports = { Jack, John }
导入:
// index.js
const { Jack, John } = require('./people.js');
如果您想要别名需要分配,或者甚至是这样:
// index.js
const {
Jack: personJack, John: personJohn,
} = require('./people.js');
在后一种情况下,personJack
和personJohn
会引用您的课程。
警告:
从容易产生意外错误的角度来看,解构可能是危险的。忘记export
上的大括号或者意外地将它们包含在require
上会相对容易。