Node.jsの使用方法を学んでいます。現在、次のようなフォルダー構造があります。
index.html
server.js
client
index.html
subs
index.html
page.html
res
css
style.css
img
profile.png
js
page.js
jquery.min.js
server.jsは私のWebサーバーコードです。 node server.js
を使用してコマンドラインからこれを実行します。そのファイルの内容は次のとおりです。
var restify = require('restify');
var server = restify.createServer({
name: 'Test App',
version: '1.0.0'
});
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.get('/echo/:name', function (req, res, next) {
res.send(req.params);
return next();
});
server.listen(2000, function () {
console.log('%s running on %s', server.name, server.url);
});
ご覧のとおり、このサーバーはRESTIFYに依存しています。 RESTIFYを使用する必要があると言われました。ただし、静的ファイルを提供する方法がわかりません。たとえば、アプリで* .html、*。css、*。png、および* .jsファイルをサーバー化するにはどうすればよいですか?
ありがとうございました!
ドキュメント から:
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: './public'
}));
ただし、これは./public/docs/public/
ディレクトリ内のファイルを検索します。
ここでは __ dirname キーを使用します:
server.get(/\/public\/?.*/, restify.serveStatic({
directory: __dirname
}));
__dirname
の値は、スクリプトファイルのディレクトリパスと同じであり、フォルダーも想定されます。ここで、public
ディレクトリです。
そして今、すべての/public/.*
URLを./public/
ディレクトリにマッピングします。
私の現在のrestifyバージョンによると(v5.2.0)
serveStatic
はplugins
に移動されたため、コードは次のようになります
server.get(
/\/(.*)?.*/,
restify.plugins.serveStatic({
directory: './static',
})
)
上記の構文は、フォルダーstatic
の静的ファイルを提供します。したがって、http://yoursite.com/awesome-photo.jpg
のような静的ファイルを取得できます
何らかの理由で、たとえばhttp://yoursite.com/assets/awesome-photo.jpg
のような特定のパスで静的ファイルを提供したい場合。
コードはこれにリファクタリングする必要があります
server.get(
/\/assets\/(.*)?.*/,
restify.plugins.serveStatic({
directory: `${app_root}/static`,
appendRequestPath: false
})
)
上記のappendRequestPath: false
オプションは、ファイル名にassets
パスを含めないことを意味します
Restify 7からのルート 完全な正規表現を取得しなくなりました ですので、/public/stylesheet.css
ファイルを提供する./public/stylesheet.css
、コードは次のようになります。
server.get('/public/*', restify.plugins.serveStatic({
directory: __dirname,
}))
これは、Restify 7に新しい(潜在的に高速な)ルーティングバックエンドがあるためです。 find-my-way
これは私がrestifyで静的ファイルを提供している方法です
server.get(/\/public\/docs\/?.*/, restify.plugins.serveStatic({
directory: __dirname,
default: 'index.html'
}));
パブリックアクセスパスは、example.com/public/docs/index.htmlになります。
私はこの問題に最近出くわしたので、これはあなたには役に立たないかもしれませんが、問題を抱えている他の人には役立つかもしれません。
Restifyをconst restify = require('restify');
として宣言すると、serveStaticメソッドがプラグインオブジェクトに含まれるため、restify.serveStatic
は静かに失敗します。メソッドにアクセスする正しい方法はrestify.plugins.serveStatic
。
更新ドキュメントは次の場所にあります: http://restify.com/docs/plugins-api/#serve-static
これを試してください:ここでのビューは、静的リソースディレクトリ名です
server.get('/\/.*/', restify.plugins.serveStatic({
directory: __dirname + "/view/",
default: './home.html'
})
);
server.get('/', function(req, res, next) {
fs.readFile(__dirname + '/index.html', function (err, data) {
if (err) {
next(err);
return;
}
res.setHeader('Content-Type', 'text/html');
res.writeHead(200);
res.end(data);
next();
});
});