2016-04-11 11 views
4

ノード上のエクスプレスを使用して提供される角型アプリケーションを構築しています。エクスプレスを使用した角型アプリケーションの提供

私がしたいのは、ユーザーがサイトにアクセスし、ロケールをURL(domain.com/en-gb)に追加するときです。

次に、指定したロケールに関係なく、同じindex.htmlを提供します。

app.use('/', function(req, res) { 
    res.sendFile(__dirname + '/public/index.html'); 
}); 

私がいる問題に関係なく、要求の同じファイルを提供するためにどのように出て作業していて、画像などの資産が同様にindex.htmlをするために再ルーティングされないようにできていますか?

おかげで、 ハリー

+0

フォールバックがあることを確認してください[そこには珍しいロケールがあります](http://stackoverflow.com/a/319 1729/393219) –

答えて

3

次のいずれかのようuseのステートメントを追加した場合、あなたはあなたのイメージの場所を指定:

var staticPathImages = __dirname + '/assets/images'; 
app.use(express.static(staticPathImages)); 

を表現するには、再ルーティングすることなく、直接、それらの静的な資産を提供します〜index.html ...

+0

このように設定しました: var staticPathImages = __dirname + '/ public/assets'; app.use(express.static(staticPathImages)); app.use( '/'、function(req、res){ res.sendFile(__ dirname + '/public/index.html'); }); それでも、すべてのファイルについてindex.htmlを提供しています。 – harrynorthover

+0

答えは「はい」です。:-)あなたが 'localhost:3000/public/assets/image.jpg'(または同様のもの)を要求すると、index.htmlファイルが提供されますか?それは非常に奇妙に聞こえる...私はあなたに似た設定を持って、それは素晴らしい... :-) – MarcoS

+0

あなたのサーバーを再起動しましたか?たぶんそれはあなたの古いコードを実行している – krakig

2

MarcoSの回答は正しいですが、私は詳細な説明を追加します:

app.use(express.static(path.join(__dirname, 'public'))); //this line enables the static serving in the public directory 

あなたpublicディレクトリには、次のようになります。

public 
|_css 
|_js 
|_images 
    |_logo.png 

次に、あなたが画像を取得したい場合:

http://localhost:3000/images/logo.png 

を、あなたのHTMLページにそれを表示したい場合:

<img id="logo" src="/images/logo.png"/>