Expressの詳細を調べる-app.use(express.static)



Express Details Explore App



node.jsを使用してサーバーを構築するには、推奨されるフレームワークはExpressです。ここでは、Expressアプリケーションの詳細を詳しく見ていきましょう。

私は誰もがこの方法を使用すると信じています:



app.use(express.static(__ dirname + '/ public'))

特記事項:publicの前には、パスを表す '/'記号を付ける必要があります。また、dirnameの前には2つのダッシュがあります。

アプリファイルで使用している必要があります。



App.use(express.static(__ dirname + '/ public'))//静的リソース(ファイル)ディレクトリを設定します


コメントにあるように、この文の意味は、静的ファイルディレクトリをproject root + publicに設定することです。

app.useの理解

App.useは、Expressではメッセージミドルウェアとして扱われます。



app.use(express.static(__dirname + '/public')) app.use(logger()) app.use(function(req, res){ res.send('Hello') })

すべてのリクエストはapp.useを再度通過します。

app.use(express.static(XX))を書く別の方法

もちろん、次のように書くこともできます。

app.use(express.static(path.join(__ dirname + 'public')))

パスモジュールのjoinメソッドを参照してください。これは、前のコード行と同等です。ここではパスモジュールが紹介されていることに注意してください。

var path = require( 'path')

では、なぜ静的リソースファイルを導入するのでしょうか。その目的は、ブラウザがアクセスできるディレクトリを設定することです。ブラウザからアクセスできるのは、このディレクトリ内のファイルのみです。

よく見てください。なぜこのコード行で静的リソースファイルを設定できるのでしょうか。それは何をしましたか?

口語的に理解できる静的リソースファイルは、ユーザーごとに内容が変更されないファイルです。これらのリソースファイルには、表示される画像、CSSファイル、およびフロントエンドのJavaScriptファイルが含まれます。

App.use([paht、] function [、function ...])は、ミドルウェア関数を登録するために使用されます。

app.use(express.static(__ dirname + 'public'))を使用すると、すべてのリクエストをexpress.static(__ dirname + 'public')に渡して処理できます。
とりあえずexpress.static()の処理内容はわかりませんが、推測に影響はありません。少なくとも、express.static()の戻り値は間違いなく関数であることがわかります。

この時点で、ブラウザからパブリックディレクトリ内のファイルにアクセスできます。

http:// localhost:3000 / images / kitten.jpg
http:// localhost:3000 / css / style.css
http:// localhost:3000 / js / app.js
http:// localhost:3000 / images / bg.png
http:// localhost:3000 / hello.html

パブリックパスがURLに含まれていないことに気づきました。どうして?

これは、Expressが静的リソースディレクトリ内のファイルを検索するため、URLの一部として静的ディレクトリを使用する必要がないためです。

静的リソースファイル(実際にはファイルシステムに存在しない)の仮想ファイルプレフィックスを作成するには、express.static関数を使用して、次のように仮想静的ディレクトリを指定できます。

app.use( '/ static'、express.static(__ dirname + 'public'))

これで、/ staticをプレフィックスとして使用して、パブリックフォルダー内のファイルをロードできます。

http:// localhost:3000 / static / images / kitten.jpg
http:// localhost:3000 / static / css / style.css
http:// localhost:3000 / static / js / app.js
http:// localhost:3000 / static / images / bg.png
http:// localhost:3000 / static / hello.html

__dirnameについての疑い

場合によっては、次のように__dirnameを使用しなくてもかまいません。

app.use( '/ static'、express.static( '/ public'))

__dirnameは絶対パスを表すと考えることができます。 Expressアプリを別のフォルダーで起動する場合、より安全な方法は、静的リソースフォルダーの絶対パスを使用することです。

app.use( '/ static'、express.static(__ dirname + 'public'))

__dirnameを理解する方法は?

注:「__ dirname」は、現在のスクリプトが配置されているディレクトリを指すnode.jsのグローバル変数です。 '__dirname'変数値は、プログラムが実行されているルートディレクトリを表します。

概要

node.jsに基づくフルスタック開発では、多くの使用法が一般的に知られています。もちろん、自分の意図に合わせて変更することもできますが、変更した場合、ルーチンがよくわからない場合は、自分で「穴」を掘ります。初心者の方は、不必要なトラブルを起こさないように、合意したスタイルに従ってコードを書くことをお勧めします。開発エンジニアは、コード自体ではなく、製品のビジネスロジックに焦点を合わせます。


参考書: スタック開発パス全体:MongoDB + Express + AngularJS + Node.js