1

我正在使用在 IISNode 下的节点上运行的 Expressjs 创建一个应用程序Windows)。

我首先像我见过的所有expressjs示例一样进行设置:

  backend.configure(function() {
    backend.register('html', {
      compile: function(str, options) {
        return function(locals) {
          return str;
        };
      }
    });
    backend.set('views', __dirname + '/views');
    backend.set('view engine', 'html');
    backend.set('view options', {
      layout: false
    });
    backend.use(express.bodyParser());
    backend.use(backend.router);
    backend.use(express.static(__dirname + '/public'));
  });  

假设我的网站在 localhost://mysite 运行。我必须按如下方式创建所有路由处理程序。

  backend.get('/mysite/index', function(req, res, next) {
    return res.render('index');
  });

即我必须在它们前面加上“mysite”。我见过的例子都不需要这个。这与 IISNode 或其他我没有配置的东西有关吗?

4

3 回答 3

6

我一直在寻找此功能,但寻找的是 API 路由,而不是静态文件。我所做的是,当我初始化路由器时,我添加了挂载路径。所以我的配置看起来像这样

//Default configuration
app.configure(function(){
    app.use(express.compress());
    app.use(express.logger('dev'));
    app.set('json spaces',0);
    app.use(express.limit('2mb'));
    app.use(express.bodyParser());

    app.use('/api', app.router);        // <---

    app.use(function(err, req, res, callback){
        res.json(err.code, {});
    });
});

调用路由器时注意'/api'

于 2013-04-19T13:12:08.770 回答
1

开箱即用,这确实是您必须这样做的方式。您可以查看express-resource,启用资源丰富的路由 - 但这有它自己的警告,至少在涉及特定于路由的中间件时。

如果这只是一条路径,我认为您可以使用app.set("basepath", "mysite").

于 2012-02-27T12:48:36.813 回答
0

为避免在使用 iisnode 在 IIS 中部署时修改您的 express 应用程序,您需要部署到 IIS 网站的根目录,而不是站点下的虚拟目录。

于 2012-03-06T23:20:44.630 回答