1

我发现

exports.index = (req, res) ->
  res.render "index",
    title: "Hello"

编译为

exports.index = function(req, res) {
    return res.render("index", { title: "Hello" })
}

与 ExpressJS 一起工作的东西。但是,我认为我可以使用:

exports = 
    index: (req, res) ->
        res.render "index",
            title: "Hello"

这样我就不必exports.xxx为所有路线输入,但编译为

var exports;
exports = {
  index: function(req, res) {
    return res.render("index", {
      title: "Hello"
    });
  }
};

这似乎不适用于 ExpressJS,为什么?

Error: In /labs/Projects/jiewmeng/routes/index.coffee, Parse error on line 1: Unexpected '{'
    at Object.parseError (/usr/lib/node_modules/coffee-script/lib/coffee-script/parser.js:477:11)
    at Object.parse (/usr/lib/node_modules/coffee-script/lib/coffee-script/parser.js:554:22)
    at /usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:43:20
    at Object..coffee (/usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:19:17)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at Object.<anonymous> (/labs/Projects/jiewmeng/server.coffee:6:12)
    at Object.<anonymous> (/labs/Projects/jiewmeng/server.coffee:74:4)
4

1 回答 1

4

请看这个解释 module.exports vs exports = foo vs exports.foo = bar 的答案

简而言之,如果您将一个名为的局部变量分配给exports一个全新的对象,则您无法将属性分配给“真实”exports对象,因此您的代码无法按预期工作。您可以 A) 将对象分配给module.exports或 B) 将属性分配给现有exports对象。

在 CoffeeScript 中运行良好的一种模式是:

module.exports = {
  SomeClass
  someFunction
  someObject
}
于 2012-06-23T01:34:01.893 回答