我最近开始在CoffeeScript中开发一个不平凡的项目,我正在努力处理注册输出等问题。我正在以非常'pythonesque'的方式编写它,单个文件有效地成为相关类和功能的“模块”。我正在寻找的是在本地定义类和函数的最好方法,并且尽可能少地重复地在exports
/window
中定义。NodeJS:保持库文件DRY
目前,我使用的每一个文件下面,保存在文件中写exports.X = X
一切:
class module
# All classes/functions to be included in exports should be defined with `@`
# E.g.
class @DatClass
exports[name] = item for own name, item of module
我也看了使用功能的可能性(比如, publish
),它将在传递类exports
/window
取决于它的名字:
publish = (f) ->
throw new Error 'publish only works with named functions' unless f.name?
((exports ? window).namespace ?= {})[f.name] = f
publish class A
# A is now available in the local scope and in `exports.namespace`
# or `window.namespace`
然而,这不符合功能工作的,据我所知,他们不能在CoffeeScript中“命名为”(E 。G。 f.name
始终为''
),因此publish
无法确定正确的名称。
有什么方法可以像publish
一样工作,但可以使用函数吗?或者处理这个问题的其他方法?
哈克,当然,但坦率地讲整洁。 Works/w函数,如果你声明像@fn =(args ...) - >'fn()'的结果。我对于一个人会非常想用这个.. –
这非常整齐。是什么让它变得拙劣? – connec
在我看来,这只是一种轻率的冒险行为,因为它不是任何官方文档中提到的技术。尽管如此,这也可能与Node&CoffeeScript的btw有关。 –