0

背景:

  • 使用 expressjs 的 Nodejs 应用程序。
  • 使用 IISNode 托管在 IIS 上
  • Nodejs 应用程序位于名为 /myVirtualDirectory 的虚拟目录中

问题:

您想使用 less 提供静态文件或 css,但传递给 nodejs 的 url 是完整的 url,与独立 nodejs 应用程序的预期不匹配。

4

2 回答 2

2

解决方案:

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 前缀以使其响应。只要这与虚拟目录的名称相同,这将匹配并且您的文件将按预期提供。

于 2012-09-06T19:38:10.707 回答
2

使用 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

于 2012-09-06T19:57:15.553 回答