Express.js的Bootstrap示例

时间:2013-12-27 13:14:56

标签: javascript html node.js twitter-bootstrap

我正在尝试使用Bootstrap Carousel示例来处理简单的Express.js代码,但我失败了,总是404返回的代码用于html文件中的那些引用链接。 index.html位于/ test /文件夹中,而其余参考文件位于/ test / docs / assets / js和/ test / docs / assets / ico中。

Express.js简单代码如下:

app.get('/', function(request, response) {
response.sendfile('index.html');
});

index.html中的参考链接部分如下:

<link rel="apple-touch-icon-precomposed" sizes="144x144" href="./docs/assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="./docs/assets/ico/apple-touch-icon-114-precomposed.png">
  <link rel="apple-touch-icon-precomposed" sizes="72x72" href="./docs/assets/ico/apple-touch-icon-72-precomposed.png">
  <link rel="apple-touch-icon-precomposed" href="./docs/assets/ico/apple-touch-icon-57-precomposed.png">
  <link rel="shortcut icon" href="./docs/assets/ico/favicon.png">

我尝试使用不带参考链接的不同html文件,效果很好。我也尝试用app.use(express.static(__ dirname +'/ docs / assets / ico /'))之类的东西进行调整,但它也不起作用。

我该怎样做才能让它正常工作?我还发现没有太多关于express.js的例子;你对研究资源有什么建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您的目录结构如下所示:

app.js
index.html
docs/assets/ico/

然后尝试将其作为最小的Express应用程序:

// app.js
var express = require('express');
var app     = express();

app.use(express.static(__dirname));

app.listen(8000);

一些解释:

  • __dirnameapp.js所在的目录;由于index.html和您的资产文件位于相对于该目录的位置,因此我们将其用作express.static的“根”目录;
  • 如果您有/,则index.html不需要单独的路由,因为静态中间件会将目录请求“转换”为index.html文件目录;

编辑:如果您想保留/的单独路由,请确保在包含静态中间件之前包含它。原因是中间件和路由(通常)按声明顺序调用;如果您首先包含静态中间件,它将处理/的请求,并且它永远不会到达您的路由处理程序:

// WRONG:
app.use(express.static(...));
app.get('/', ...);

// RIGHT:
app.get('/', ...);
app.use(express.static(...));