2016-08-04 18 views
0

フロントエンド開発者の質問のノード/ NPM初心者。 NPMタイプのモジュールの強みの1つは、その依存関係がnode_modules内にインストールされるということです。モジュールには常に必要なコードがあり、外部のlibは競合しません。フロントエンドノードNPMモジュールと同じ依存関係の複数のダウンロード

これは、クライアントが同じlib + ver(jquery v.Xなど)を複数回ダウンロードするように思われると述べています。モジュールが依存関係を必要としていることを指定する技術は何ですか?しかし、依存関係がサイト/ページ上ですでに利用可能な場合、そのコードをパッケージ化すべきではありませんか?この技術には、共有lib + verを利用できるようにする親モジュールが含まれていますか?

また、さまざまなフロントエンドモジュールが同じlib + verをダウンロードして、ページ上の他のモジュールがすでにダウンロードしている可能性がありますか?

+0

ビルドスクリプトを作成するときに、共有ライブラリを連結しないで、モジュールによってreq'dされた共有ライブラリをダウンロードするようにHTMLスクリプトタグが生成されると指定します。ブラウザのキャッシングにも適しています。それとも別の方法ですか?特定のモジュールに必要なすべてのライブラリを連結して、余分な重量について心配する必要はありませんか? –

答えて

0

クライアントはそのフォルダから必要なファイルのみを取得します。クライアントがHTMLにリンクされている場合、クライアントはそのファイルを1度しか取得しません。 NPMは依存関係の重複を自動的に処理します。

通常、サーバの構造全体を明らかにすることなく、静的フォルダをクライアントに提供したいと思うでしょう。これは、使用して達成することができます。

「サーバー/国民が」あなたが奉仕したいserver.jsファイルの相対ディレクトリである

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

。この場合、 'public'には、HTMLページからリンクされた、リンクされたすべてのビューファイル、スタイルシート、JSファイルなどが含まれます。そのモジュールの依存関係もそこに移動する必要はありません。

これの欠点は、手動で依存関係をパブリックフォルダ(私はベンダーのディレクトリを作成する)に手動で移動し、そこからリンクする必要があるということです。それはより多くの作業ですが、長期的にははるかに効率的で安全です。

注:静的フォルダを使用してファイルを提供する場合、HTMLリンクはそのフォルダへの相対パスから提供されます。

+0

ありがとう、ジョー...そのミドルウェアは、セキュリティのための素晴らしいオプションのように見えます。今のところ、私は古い学校の手作業cssとjsからリンクし、ノードを介してすべてのことを管理することに頭を下ろそうとしています。実際に私は "webpack"がsharedLibsとページ固有のjsファイルとの "コード分割"を可能にしているのを見ています...私はこの時点でもっと簡単にgrokkingしています:-) –

関連する問題