我最近開始在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有關。 –