Expressを使用してNode.jsアプリケーションを作成しました。私が/
を要求するとき、私は/public/app/index.html
に奉仕したいと思う。これは機能します。しかし、index.html
には2つのファイルが含まれており、相対パスは分割されます。パスはHTMLヘッダーのように設定されていますが、app.js
とstyle.css
を取得しようとすると、(ブラウザ?)は/
を参照していると考えられます。Expressで静的ファイルを処理する
<link rel='stylesheet' href='/lib/lib.css'/>
<link rel='stylesheet' href='style.css'/>
<script type="application/javascript" src="/lib/lib.js"></script>
<script type="application/javascript" src="app.js"></script>
これは私が私のHTMLのためのビルドプロセスを使用することを私には問題である理由、それは一つのフォルダにすべて内蔵されたファイルをダンプする際に論理的だった(HTML、CSS、JS、画像) 。こうすることで、独自のフォルダ内で常にjsとcssを指すテンプレートHTMLファイルを使用できます。私は、相対パスでスクリプトを注入することを避けることができると期待しています。
フォルダ構造各ページの
root/
├── public/
│ ├── lib/
| | ├── lib.js
| | └── lib.css
│ ├── app/
│ | ├── index.html
│ | ├── style.css
| | └── app.js
├── app.js
├── routes/
| └── index.js
app.js
var app = express();
var server = app.listen(4100);
app.use(express.static(path.join(__dirname, 'public')));
// routes
var index = require('./routes/index');
app.use('/', index);
index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
var path = 'index.html';
var options = {
root : './public/app/'
};
res.sendFile(path, options, function(err){
console.log(err)
});
});
module.exports = router;
に行きますか? 'public /'に "app-like"ディレクトリを追加するつもりなら、 '/'はある特定のアプリを指しているという事実とどのように統合されますか? – robertklep
まあ 'app'は私の主なアプリケーションです。'/users'は 'public/users /'を指しています。なぜなら、absパスを使用しないのは私のビルドプロセスだからです。特定のルート(アプリケーション、ユーザー、連絡先など)のすべての静的なパブリックファイルはすべて同じフォルダにあります。そのようにして、すべての 'index.html'は、それらのfolde.rに関連する同じスクリプトとスタイルを含みます – jozenbasin