花最后几个小时尝试找出编译coffeescript的最佳方法,并根据请求提供.js。我用的是require.js,不,require的咖啡插件不是答案,只是听起来很奇怪…我不想使用连接资产,因为我使用的是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文件,编译它们并将它们返回给客户端。但是代码太多了....然后我找到了coffee-middleware的npm包,我想用3行咖啡来配置我的服务器来提供咖啡服务会更简洁,但它只是开始将。js编译到与coffee相同的目录下。
请帮忙。有什么项目样本可以让我看看git之类的吗?提前感谢你!
或者我将不得不发布上面代码的npm包,我不确定这是否是最好的选择:)
编译coffee-script:
- 使用咖啡脚本编译器的watch功能。
- 创建Makefile (
make coffee
;-) - 使用grunt,或任何其他工具。
如果您使用Makefile方法,您可以为启动服务器创建一个目标,该目标在启动服务器之前编译coffeescript。
然后我找到了coffee-middleware的npm包,我想用3行咖啡来配置我的服务器为咖啡服务会更干净,但它只是开始编译。js到与coffee相同的目录。
connect-coffee-script模块同时接受src
和dest
选项,所以你的源目录保持整洁。
实际上,我看到咖啡中间件也是如此。