0

私がNode.js抱えている唯一の問題から静的ファイルを提供しようとしています。次のように、サブパスに進み続ける場合です。

localhost:3000/foo/bar/baz/quux

次に、次のように、同じ回数ステップアップする必要があります。

../../../../public/javascripts/whatever.js

ご覧のとおり、非常に煩わしくなりますが、Express v3 に認識させ/public/javascripts/whatever.jsて、ステップアップする代わりに実行できるようにする方法はありますか? 前もって感謝します

これは、Express` の現在の静的ミドルウェアです

app.use("/public", express.static(__dirname + '/public'));
4

2 に答える 2

3

ルート (つまり ) から静的ファイルを参照する場合src='/some/path/to/file.js'、URL は重要ではありません。

静的ルーティングを使用した Web サイトの例

ディレクトリ構造

/public
    /css/style.css
    /js/site.js
/vendor/thoughtbrain/js/awesome-town.js
/views/view.html
/app.js

view.html


<!DOCTYPE html>
<html>
  <head>
    <!-- These files are served statically from the '/public' directory... -->
    <link href="/css/style.css" rel="stylesheet" >
    <script src="/js/site.js"></script>
    <!-- ... while this is "mounted" in virtual '/public' -->
    <script src="/public/js/awesome-town.js"></script>
  </head>
<body><p>Express</p></body>
</html>

app.js

var express = require('express'),
    http = require('http'),
    path = require('path'),
    app = express();

// Remember: The order of the middleware matters!

// Everything in public will be accessible from '/'
app.use(express.static(path.join(__dirname, 'public')));

// Everything in 'vendor/thoughtbrain' will be "mounted" in '/public'
app.use('/public', express.static(path.join(__dirname, 'vendor/thoughtbrain')));

app.use(express.static(path.join(__dirname, 'views')));

app.all('*', function(req, res){
  res.sendfile('views/view.html')
});

http.createServer(app).listen(3000);

このアプリケーションを実行すると、

http://localhost:3000

http://localhost:3000/foo/bar/baz/quux

どちらもview.htmlを提供し、すべての参照アセットが解決されます。

Express Framework には、ここに静的ミドルウェアの使用に関するセクションがあります。

于 2013-04-23T05:33:30.740 に答える