Heroku上的Node.js:在开发中使用中间件,但在生产上使用静态资源?

一些中间语言如Stylus提供了两种编译方式:通过connect中间件或通过CLI工具。 后者可以生成静态编译资产(即.css文件)。

所以我想在开发模式上使用中间件,而在生产上使用静态资产。 我知道我可以使用app.configure('developmen'...)来请求express (不)在开发模式中使用一些中间件。

在像Amazon EC2这样的IaaS环境中,我可以运行一个简单的shell脚本来自动重新编译我的所有资产。 但是PaaS,特别是Heroku呢? 我怎样才能告诉我.styl.css应该在哪里生成?

你可能想看看https://github.com/adunkman/connect-assets 。 它caching任何build立的JavaScript或CSS文件(它有手写笔内置支持手写笔),如果你通过它build:true

如果你不感兴趣,你可以忽略snockets(像JS包含系统的链轮),虽然我喜欢使用它。 #= require_tree app并包含该目录中的所有js文件。 而在开发中,您可以获得单独的脚本,以便于debugging。

直接与Heroku上的连接资源服务的最大的缺点是你需要git推到Heroku的客户端代码的每一个更新,这会自动触发重新启动。 我最终手动build立我的资产(手写笔和snockets),然后上传到S3。 如果你不需要经常更新客户端代码,那不是那么大的问题。

你可以看看express-cdn ,它会在服务器启动时将你的资产上传到S3。

我最终做的是在CloudFlare注册,发现它的速度并不像使用CloudFront那么快,但是安装起来非常简单,而且比从我的dyno提供资源文件效果更好。