【发布时间】:2011-10-30 17:07:53
【问题描述】:
我最近开始在 CoffeeScript 中从事一个重要的项目,我正在努力解决如何最好地处理注册导出等问题。我正在以一种非常“pythonesque”的方式编写它,单个文件实际上是相关类和函数的“模块”。我正在寻找的是在本地和 exports/window 中定义类和函数的最佳方法,尽可能少地重复。
目前,我在每个文件中都使用以下内容,以节省文件中所有内容的写入 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 中“命名”(例如,f.name 始终为 ''),因此 publish 无法确定正确的名称。
是否有任何方法可以像 publish 一样工作但适用于函数?或者任何其他的处理方式?
【问题讨论】:
标签: node.js coffeescript dry