请考虑以下代码。如果我声明exports
字段如下:
exports =
someFunc : -> # blablabla
someOtherFunc : ->
它被编译成:
var exports;
exports = {
someFunc: function() {},
someOtherFunc: function() {}
};
但是你可能已经知道我需要出口字段保持未申报。换句话说,我需要以某种方式告知编译器不要生成var exports;
语句。
我知道我可以这样破解:
exports.someFunc = ->
exports.someOtherFunc = ->
但这只是一个混乱而且看起来很像缺陷,因为CoffeeScript的本质是减少代码噪音。
有没有方法或更好的黑客围绕这个?
答案 0 :(得分:2)
我认为您不能直接分配到导出(在nodejs中)。我认为你的代码应该是
module.exports =
someFunc : -> # blablabla
someOtherFunc : ->
在这种情况下,CS将假定模块已经定义并且将只输出
module.exports = {
someFunc: function() {},
someOtherFunc: function() {}
};
答案 1 :(得分:0)
我想到了一个更巧妙的黑客攻击,这意外地适合export
需要更好,因为它不会删除先前分配的导出字段:
exports[k] = v for k, v of {
someFunc : ->
someOtherFunc : ->
}
但它仍然是一个黑客,它只适用于分配未声明对象的字段。如何分配未声明的变量仍然是一个问题。
答案 2 :(得分:-1)
我假设您“需要导出字段保持未声明”,因为您正在编写Node.js模块exports
已经声明,是吗?在这种情况下,这个问题及其最佳答案应该在很大程度上帮助您:How do I define global variables in CoffeeScript?
简而言之,你会做这样的事情:
root = exports ? this
root =
someFunc : -> # blablabla
someOtherFunc : ->
希望有所帮助!