一尘不染

具有require的Node.js ES6类

node.js

到目前为止,我已经node.js通过以下方式创建了类和模块:

    var fs = require('fs');

var animalModule = (function () {
    /**
     * Constructor initialize object
     * @constructor
     */
    var Animal = function (name) {
        this.name = name;
    };

    Animal.prototype.print = function () {
        console.log('Name is :'+ this.name);
    };

    return {
        Animal: Animal
    }
}());

module.exports = animalModule;

现在使用ES6,您可以像下面这样创建“实际”类:

class Animal{

 constructor(name){
    this.name = name ;
 }

 print(){
    console.log('Name is :'+ this.name);
 }
}

现在,首先,我喜欢这个:),但这引起了一个问题。如何将其与node.js的模块结构结合使用?

假设您有一个班级,为了演示而希望使用一个模块,说您想使用 fs

所以您创建文件:


Animal.js

var fs = require('fs');
class Animal{

 constructor(name){
    this.name = name ;
 }

 print(){
    console.log('Name is :'+ this.name);
 }
}

这是正确的方法吗?

另外,如何将此类公开给节点项目中的其他文件?如果在单独的文件中使用它,您仍然可以扩展该类吗?

我希望你们中的一些人能够回答这些问题:)


阅读 222

收藏
2020-07-07

共1个答案

一尘不染

是的,您的示例可以正常工作。

至于公开您的课程,您可以export像其他任何课程一样进行:

class Animal {...}
module.exports = Animal;

或更短一点:

module.exports = class Animal {

};

一旦导入到另一个模块中,您就可以将其视为在该文件中定义了:

var Animal = require('./Animal');

class Cat extends Animal {
    ...
}
2020-07-07