我是node和npm的新手,所以感谢在这里与我合作。
我想打包/模块化从基类继承的一系列类(在单独的文件中),并且最终用户/程序员应该可以看到所有类。换句话说,我想保留以前的需求,以便我有一个主对象,最终用户可以要求获取所有内容。 require(' Event')也需要用户/程序员的项目。
"use strict";
const Item = require('./Item');
module.exports = class Event extends Item {
constructor() {
super();
this.TypeName = 'Event';
this.JSON = '{}';
}
static Bind(service, eventId) {
return new Event();
}
}
和
"use strict";
module.exports = class Item {
constructor() {
this.TypeName = 'Item';
this.JSON = '{}';
}
static Bind(service, itemId) {
return new Item();
}
}
感谢您的帮助!
答案 0 :(得分:2)
如果要从模块中导出多个内容,则导出父对象,并且要导出的每个内容都是该对象上的属性。这不是"链接"因为从模块中导出多个顶级项目实际上并不存在这样的事情。
module.exports = {
Event, Item
};
class Item {
constructor() {
this.TypeName = 'Item';
this.JSON = '{}';
}
static Bind(service, itemId) {
return new Item();
}
}
class Event extends Item {
constructor() {
super();
this.TypeName = 'Event';
this.JSON = '{}';
}
static Bind(service, eventId) {
return new Event();
}
}
然后,使用此模块的人会这样做:
const m = require('myModule');
let item1 = new m.Item();
let event1 = new m.Event();
或者,您可以将它们分配给模块中的顶级变量:
const {Item, Event} = require('myModule');
let item1 = new Item();
let event1 = new Event();
如果您在自己的文件中有多个类,并且希望能够使用一个require()
语句加载它们,那么您可以创建一个主文件,在每个文件上执行require()
单个文件并将它们组合成一个导出的对象。然后,当您想要导入所有这些时,您只需要在主文件中输入。
node.js模块的设计使得您在该模块中需要的所有内容require()
,并且在每个想要使用某些内容的模块中执行此操作。这增强了模块的可重用性或可共享性,因为每个模块独立地导入所需的东西。在任何其他模块工作之前,您不必拥有必须在某处导入的所有全局状态。相反,每个模块都是自我描述的。对于从事模块工作的人来说,它也更加明显,因为它依赖于所有内容的require()
语句。对于来自不同环境的人来说,这可能看起来有点额外的打字,你可能只是将一次导入到全局命名空间中(并且更多的是打字),但是有很好的理由这样做,老实说,它没有& #39; t需要很长时间才能适应它,然后你可以享受这样做的一些好处。