javascript - なぜ依存関係で依存関係を宣言するのでしょうか?
为情所困
为情所困 2017-06-21 10:11:57
0
5
738

--save でインストールされたモジュールを確認すると、依存関係に表示されます。
依存関係内のモジュールは、運用環境の依存関係を表します。 jQueryなど。

しかし、私が理解できないのは、jQuery を例として考えてみることです。依存関係を依存関係で宣言する必要があるのはなぜですか?
本番環境では、依存関係をまったく使用せずに、スクリプト タグを直接使用して jQuery を参照します。運用環境が依存するモジュールが依存関係で宣言されている場合はどうなりますか?スクリプト タグは自動的に追加されますか? それとも、たとえば、モジュールをパッケージ化するとき、運用環境モジュールをパッケージ化するときに、依存関係内のすべての依存関係がパッケージ化されますか?しかし、私の知る限り、たとえば webpack モジュールをパッケージ化する場合、require モジュールによって作成された依存関係グラフに基づいてパッケージ化されるため、なぜ本番環境の依存関係を dependency で宣言する必要があるのか​​がよくわかりません。

为情所困
为情所困

全員に返信(5)
我想大声告诉你

実際の開発では多くのモジュールを使用します。一部のモジュール (gulp、babel など、これらは devDependency に配置されます) は開発環境でのみ使用されますが、jquery はプロジェクトをデプロイするときに実稼働環境で使用されます。本番環境では、npm install --production を実行すると、依存関係にあるモジュールのみがインストールされるので非常に便利です。

いいねを押す +0
Ty80

実際のところ、そのフィールドはノード用に設計されているため、それを書くかどうかは関係ありません。

より具体的に言うと、フロントエンド プロジェクトとして、依存関係はパッケージ化されるかスクリプト タグで導入されるため、deps フィールドの内容は最終的なコードにはまったく影響しません。

いいねを押す +0
Peter_Zhu
  • 使用する場合は<script>加入模块的话,这个引入JS/CSS的方法本身用不到npm包管理,可以直接忽略package.json設定の問題

  • webpack进行打包。webpack在模块打包时是根据require的模块创建的依赖图表来打包的,这的确没错。但是之后还有一步,就是webpack通过依赖图表进行打包的时候,如果依赖图表里有jQuery依赖,webpack还是要去找jQuery的文件,然后注入到打包的文件之中。如果你不写dependencies的话,在团队开发中,另一个人改了一点代码,然后用npm install のような依存関係パッケージをインストールしてから再パッケージすると、webpack は jQuery に依存する依存関係グラフを作成しますが、webpack は、node_modules 内のターゲット ファイルに挿入する jQuery コードを見つけることができないため、再パッケージすると失敗します。もちろん、あなただけが開発している場合は、これを無視できます。

  • もちろん、依存関係には、以前に書いたnode.js クローラーなどの別のアプリケーションがあります。このクローラはノードを直接使用して JS コードを実行するため、require はこれらの依存関係を JS ファイルにインストールした後にのみ対応するパッケージを読み取ることができます。 require()的包都需要写在dependencies里,部署的时候用npm install

いいねを押す +0
淡淡烟草味

ページを開発するにはwebpackを使用する必要があるため、nodeを使用すると思います。そうしないと、依存関係とスクリプトの関係について質問することはできません。両者の間には何のつながりもありません。

ここでは 3 つのものを混ぜ合わせています:

  1. package.jsonの依存関係管理

  2. webpackの依存関係管理

  3. HTMLでのスクリプトの紹介

package.jsonの依存関係管理

nodeはページ開発だけでなく、サーバープログラムの開発やJSライブラリの開発など、さまざまな用途に使用できます。依存関係は、プロジェクトが によって使用されるときに、プロジェクトの依存関係を記録および保証します。 devDependency は、プロジェクトが によって開発されるときに、プロジェクトの依存関係を記録および保証します。 例として、ライブラリを開発し、NPM で公開する準備をします。

を使用する必要がある場合、devDependency には babel と eslint が含まれます。

lodash.sample,开发时使用es6,并且还使用eslint对代码风格进行规范。那么dependencies中就有lodash.sample依存関係により、誰もが私たちのライブラリをインストールするとき、

同じ開発環境 (パッケージ化、トランスコーディング、制約、構築など) を入手できることが保証されます。考えてみてください。別のコンピュータを使用していて、このライブラリのバージョン 2.0 を開発したい場合、devDependency がない場合は、babel と eslint を手動で再度インストールするか、元のプロジェクトからプロジェクト全体をコピーする必要があります。 .node_modules フォルダー。

lodash.sample都会被安装(否则这个库将无法正确运行);devDependencies保证任何人在(或者你自己在其他设备上)对这个项目进行修改(开发)时,通过npm installwebpackの依存関係管理

Webpack は、ページ開発で使用できる構築ツールであり、他の場所でも使用できます。 Webpack の依存関係管理は

を通じて依存関係を検索しますが、依存関係には依存しません。

require引き続き上記のライブラリの例を使用すると、パッケージ化に webpack を使用できます (その場合、devDependency に webpack が存在するはずです)。電話をかけても。

HTMLでのスクリプトの紹介npm install --save了其他十几个模块,webpack时,也只会将lodash.sample

webpack を使用してページを開発する場合、パッケージ化された js ファイルは最初に HTML のスクリプトとして手動で導入されますが、その後、このプロセスを自動的に完了するのに役立つプラグインが存在します。その後、vue-cli などの一部のスキャフォールディング ツールには責任ある Webpack 構成が組み込まれ、プロセス全体が最適化および自動化されました。さらに、開発プロセス全体がノード内で完了するため、依存関係とスクリプトの間に関係があると誤解する可能性があります。

あなたの質問に戻ります:「なぜ運用環境の依存関係を依存関係で宣言する必要があるのか​​」

その理由は、これらの依存関係が記録されていない場合、他の人 (または他のデバイスを使用しているあなた自身) が再開発するときに、どの依存関係をプロジェクトに導入する必要があるのか​​が分からず、開発が不可能になるためです。ユーザーが 1 人だけで、コンピューターを切り替えない場合は、依存関係を使用する必要はありません。

いいねを押す +0
淡淡烟草味

工作环境改变的时候,你的项目要是想正常运行。必须声明依赖,这样不管在哪里,只需要一句
npm install作業環境を復元し、すべての依存関係を解決できます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!