gpt4 book ai didi

node.js - NodeJS : Keeping library files DRY

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:05 26 4
gpt4 key购买 nike

我最近开始在 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 一样工作,但可以与函数一起使用?或者有其他处理方法吗?

最佳答案

这是一个丑陋的黑客,但你可以使用以下内容:

class module.exports
class @foo
@bar = 3

然后:

require(...).foo.bar // 3

关于node.js - NodeJS : Keeping library files DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7942490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com