【发布时间】:2017-07-29 18:41:51
【问题描述】:
所以到目前为止,我已经通过以下方式在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);
}
}
这是正确的方法吗?
另外,您如何将此类公开给我的节点项目中的其他文件?如果你在一个单独的文件中使用它,你还能扩展这个类吗?
我希望你们中的一些人能够回答这些问题:)
【问题讨论】:
-
只需将 ES6 类名视为与您在 ES5 方式中处理构造函数名称相同。他们是一样的。 ES6 语法只是语法糖,创建完全相同的底层原型、构造函数和对象。
-
创建
animalModule的 IIFE 在具有自己模块范围的节点模块中毫无意义。
标签: javascript node.js ecmascript-6