web-dev-qa-db-ja.com

「静的ファイルの提供」とはどういう意味ですか?

これまでは、Webstormに組み込まれたWebサーバーを使用してコンテンツを提供することで、サーバーを実行せずにクライアントサイドアプリケーションを常に開発してきました。

ExpressでWebサーバーとして動作するためにNodeを使用する場合によく見られるのは、htmlファイルをノードまたはクライアントコードで配置するかどうかについての議論です。

Htmlまたはcssに含まれるjavascriptファイルは、クライアントディレクトリに最適に保存されることを理解していますか?

だから私の最初の質問は、このようなフォルダ構造を持つことです

app/
  client/ js files
  server/ node files

Htmlページをサーバーまたはクライアントディレクトリに含める必要がありますか?

第二に:

時々express.static静的ファイルの場合、ここでの静的ファイルの正確な意味は何ですか?現在、ほとんどのWebサイトは静的なドキュメントではありませんが、DOMを操作することによりjavascriptによって変更されるファイルなので、htmlファイルは静的なファイルとは見なされません。

私が見る限り、組み込みWebサーバーの代わりにNodeを使用することで得られる唯一の利点は、データベースにアクセスしたい場合です。

26
Robin-Hoodie

現在、ほとんどのWebサイトは静的なドキュメントではありませんが、DOMを操作することによりjavascriptによって変更されるファイルなので、htmlファイルは静的なファイルとは見なされません。

ページ自体のファイルはまだ静的です。つまり、サーバー側のコードを使用して動的に作成するのではありません。このコンテキストでは、ブラウザで何が起こるかは関係ありません...アイデアは、コンテンツが変更されないため、これらのファイルをその場で生成する必要がないということです。

Htmlまたはcssに含まれるjavascriptファイルは、クライアントディレクトリに最適に保存されることを理解していますか?

サーバー上のどこにファイルを保存してもかまいません。重要なのは、通常、Node.jsアプリケーションから静的ファイルを提供したくないということです。 express.staticなどのツールは、便宜上のものです。時には、トラフィックの少ないアプリケーションがあるかもしれません。これらの場合、Node.jsアプリでファイルを提供することは完全に受け入れられます。適切なトラフィック負荷がある場合は、静的な配信をNginxなどの実際のWebサーバーに任せるのが最善です。これらのサーバーはNode.jsアプリケーションよりもはるかに効率的だからです。

Node.jsアプリケーション内にアプリケーションコード(APIサーバーなどの動的応答を提供するコード)を保持する必要があります。

また、Node.jsアプリケーションをNginxなどのプロキシの背後に配置して、プロキシがすべてのクライアントインタラクション(スプーンフィードの遅いクライアントなど)を処理し、Node.jsアプリケーションが最適な処理を行えるようにすることもお勧めします。繰り返しますが、トラフィックの少ない状況では問題ではありません。

31
Brad

静的ファイルにexpress.staticを使用している人がいることもありますが、ここで静的ファイルが意味することは何ですか?

あなたはこのコードを参照していると思いますが、通常、エクスプレスアプリの_app.js_ファイルが見つかりました。

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

express.static()は、簡単に検索できるようにディレクトリ名をパスディレクトリにマップするミドルウェアです。通常、次のものがあります。

_- public
  |_ javascripts
  |_ stylesheets
  |_ images
_

javascriptsディレクトリにスクリプトがある場合、それを含めるためにフルパスを入力する必要はありません。ただ:

_./javascripts/script.js_

静的ファイルは、NPMやBowerなどに含まれていないファイルと見なすのが最適です。それらは、独自のスクリプト、スタイルシート、画像などです。動的または静的なページとは関係ありません。

最初の質問について:

ノードを使用している場合、そのようなプロジェクトアーキテクチャが必要かどうかは個人的にはわかりません。ノードとクライアントサイドアプリに Ember.js または Angular のようなものを使用している場合、実際のアプリケーションスクリプトを_public/javascripts/_内に個人的に配置するよりもディレクトリ。しかし、それは私だけです。

一日の終わりに、好きなプロジェクト構造を選択し、それを守ります。ただし、他の人がプロジェクトに取り組んでいる場合は、一般的な規則に従ってください。生活が楽になります。

7
JDillon522