背景:
- 使用 expressjs 的 Nodejs 应用程序。
- 使用 IISNode 托管在 IIS 上
- Nodejs 应用程序位于名为 /myVirtualDirectory 的虚拟目录中
问题:
您想使用 less 提供静态文件或 css,但传递给 nodejs 的 url 是完整的 url,与独立 nodejs 应用程序的预期不匹配。
解决方案:
var express = require('express');
var app = express();
var lessMiddleware = require('less-middleware');
app.use('/myVirtualDirectory', lessMiddleware({
src: __dirname + '/public',
compress: true
}));
app.use('/myVirtualDirectory', express.static(__dirname + '/public'));
注意我们在哪里指定了要使用的中间件,我们已经传入了 url 前缀以使其响应。只要这与虚拟目录的名称相同,这将匹配并且您的文件将按预期提供。
使用 iisnode 在 IIS 中托管 node.js 应用程序的好处之一是您可以依靠 IIS 中的静态文件处理程序来提供静态文件。好处是性能的显着提高,因为对静态内容的请求由本机代码提供服务,而无需调用 JavaScript。
要使用 iisnode 设置托管在 IIS 中的 node.js 应用程序,以使用 IIS 静态文件处理程序提供静态文件,请使用http://tomasz.janczuk.org/2012/05/yaml-configuration-support中所述的 URL 重写模块-in-iisnode.html
要了解使用静态文件处理程序而不是 node.js 模块来提供静态文件的性能优势,请阅读http://tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html。