导出类与函数

时间:2014-11-08 10:22:13

标签: node.js coffeescript

对于实用程序模块,我可以使用静态方法或只导出方法。我认为第一个解决方案更好,尽管我看到了很多带有第二个选项的实现。有没有"细微差别"在这里我不考虑?

3 个答案:

答案 0 :(得分:1)

导出方法更安全,因为您无法访问类属性。还要注意,在javascrpt中,类的概念没有太多意义,它已被引入以使感觉更加舒适的开发人员具有oo语言背景。尝试使用对象原型设计。

答案 1 :(得分:1)

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

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

  • 名为 Utils 的文件中名为 utils.js 的类将所有实用方法整齐地组合在一起,在美学上比到处定义的扁平函数更令人愉悦。

  • 一个类可以在其方法中使用 properties,但为此您需要 @babel/plugin-proposal-class-properties。同样,比到处定义的变量要好得多。

答案 2 :(得分:0)

我能想到的几个选项,如果这些方法是另一个类的实用方法,你可以使用handbaked mixins:http://coffeescriptcookbook.com/chapters/classes_and_objects/mixins或依赖于下划线/ lowdash中类似的东西

如果你想要封装方法并且仍然具有扩展能力,你可以这样做:

class Foo
  foo = -> alert 'foo'

  @static: -> foo()


Foo.static() #=> 'foo'

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

class Bar extends Foo

Bar.static() # => 'foo'

jsfiddle:http://jsfiddle.net/4ne7ccxk/