我没有太多使用NPM或Node.js的经验,我的JavaScript工作主要局限于web浏览器。我已经编写了一个JavaScript库,它提供了两个功能: 1.构造函数,2.枚举类型。
当然,JavaScript中没有真正的“枚举”,所以我的JS文件基本上是这样的:
function MyClass() {
// Implementation
this.doWork = function () {
// ...
return MyEnum.Success;
};
}
var MyEnum = {
Error: 0,
Success: 1,
Something: 2,
More: 3
// etc.
// I could probably use Object.define here to make it constant
};MyClass函数在内部使用来自MyEnum的属性,MyEnum对于MyClass的调用者也很有用。因此,它应该保持公开。
现在,npm包只能导出主对象中的属性,也可以导出对象本身。我可以做这些事情:
module.exports = MyClass;或
module.exports = {
MyClass: MyClass,
MyEnum: MyEnum
};在第一种情况下,直接使用该类很容易,但MyEnum会迷失方向。
let MyClass = require("myclass");
let x = new MyClass();
// Where is MyEnum?第二个变体在使用它时需要写两次类名。
let MyClass = require("myclass");
let x = new MyClass.MyClass();
if (x.doWork() === MyClass.MyEnum.Success) { }我可以做什么来解决这个问题,使构造函数直接可用,因为它似乎是正常的,并导出枚举?
发布于 2019-03-13 02:51:42
只是让枚举成为函数对象的属性吗?
// myclass.js
// ...
MyClass.MyEnum = MyEnum;
module.exports = MyClass;
// elsewhere.js
let MyClass = require("myclass");
let x = new MyClass();
if (x.doWork() === MyClass.MyEnum.Success) { }https://stackoverflow.com/questions/55128709
复制相似问题