在没有连接资产的情况下向客户提供coffeescript的最佳方式

时间:2013-04-11 23:59:02

标签: node.js express coffeescript

花费最后几个小时试图找出编译coffeescript的最佳方法,并根据要求提供.js。我正在使用require.js而不是,请求的咖啡插件不是答案,只是听起来很奇怪......而且我不想使用connect-assets,因为我使用的是require.js。所以我最终写了类似的东西:

app.configure 'development', ->
  app.get(/.js$/, (req, res, next) ->
    script = req.originalUrl.substring(1, req.originalUrl.length - 3)
    try
      file = "app/assets/javascripts/#{script}.coffee"
      cs = fs.readFileSync "#{__dirname}/#{file}", "ascii"
      try
        js = coffee.compile cs
        res.header 'Content-Type', 'application/x-javascript'
        res.send(js, 200)
      catch e
        res.send("Coffee compile error in #{file}\n" + e.stack, {'Content-Type': 'text/plain'}, 500)
    catch e
      next()
    )
    app.use(express.static("#{__dirname}/app/assets/javascripts"))

所以我捕获所有.js请求,找到相应的.coffee文件,编译它们并将它们提供给客户端。但它只是很多代码.... 然后我找到了咖啡中间件npm包,我认为只使用3行咖啡配置我的服务器供应咖啡就更干净了,但它刚开始将.js编译成与咖啡相同的目录。

任何帮助请。我可以在git上看到的任何项目样本吗?非常感谢你!

或者我必须发布上面代码的npm包,我不确定是否是最佳选择:)

2 个答案:

答案 0 :(得分:0)

编译咖啡脚本:

  • 使用coffee脚本编译器的watch功能。
  • 创建一个Makefile(make coffee; - )
  • 使用grunt或任何其他工具。

如果你使用Makefile方法,你可以创建一个启动服务器的目标,在启动服务器之前编译coffeescript。

答案 1 :(得分:0)

  

然后我找到了咖啡中间件npm包,我认为只用3行咖啡配置我的服务器供应咖啡就更干净了,但它刚刚开始将.js编译成与咖啡相同的目录。

connect-coffee-script模块同时选择srcdest个选项,因此您的源目录保持整洁。

实际上,我看到coffee-middleware也是如此。它在README中是正确的。