Node.js 导出类与函数

Node.js 导出类与函数,node.js,coffeescript,Node.js,Coffeescript,对于实用程序模块,我可以使用静态方法创建类,也可以只使用导出方法创建类。我认为第一种解决方案更好,尽管我看到很多第二种方案的实现。这里有什么我没有考虑的“细微差别”吗?导出方法更安全,因为您不允许访问类属性。还要注意的是,在javascrpt中,类的概念没有太多意义,它的引入是为了让开发人员对oo语言背景更加熟悉。尝试使用对象原型制作。我可以想到几个选项,如果这些方法打算成为另一个类上的实用方法,您可以使用手工制作的mixin:或者依赖下划线/低划线中类似的内容 如果您希望封装方法,并且仍然能够

对于实用程序模块,我可以使用静态方法创建类,也可以只使用导出方法创建类。我认为第一种解决方案更好,尽管我看到很多第二种方案的实现。这里有什么我没有考虑的“细微差别”吗?

导出方法更安全,因为您不允许访问类属性。还要注意的是,在javascrpt中,类的概念没有太多意义,它的引入是为了让开发人员对oo语言背景更加熟悉。尝试使用对象原型制作。

我可以想到几个选项,如果这些方法打算成为另一个类上的实用方法,您可以使用手工制作的mixin:或者依赖下划线/低划线中类似的内容

如果您希望封装方法,并且仍然能够扩展,则可以执行以下操作:

class Foo
  foo = -> alert 'foo'

  @static: -> foo()


Foo.static() #=> 'foo'

Foo.foo #=> undefined
new Foo().foo #=> undefined

class Bar extends Foo

Bar.static() # => 'foo'

jsfdle:

我认为带有静态方法的类更好,原因如下:

  • 如果您的类名是
    Utils
    ,则默认情况下,所有导入也会将其作为
    Utils
    导入。然而,对于导出的函数,它们可以作为
    Utils
    导入,但这只是一种约定,在所有不同的地方可能都不是这样

  • 在名为
    Utils.js
    的文件中,一个名为
    Utils
    的类将所有实用程序方法整齐地组合在一起,从美学上讲,它比到处定义的平面函数更令人愉快

  • 一个类可以有
    属性
    ,这些属性在它的方法中使用,但是您需要这样做。同样,比各地定义的变量要好得多


我提到过,在实用模块的情况下,即它只包含函数,没有任何属性。你的回答听起来自相矛盾,如果它们仅仅是作为语法上的甜点引入的,那么应该考虑它们已经更好了,因为问题主要是关于风格。这些示例看起来非常难看。