Sindre Sorhusは600以上のnpmモジュール ( 666、Karl! )の著者です。 最近のAMA(知らない人、これは、たとえばgitリポジトリへのチケットの形で、有名な人や興味深い人が彼に質問することを提案するような形式です。もちろん、彼は/ r / AMAとLebedevのビュッフェテーブルを知っています )単一行モジュールに関する彼の立場は、しばしばノードアドレスに対する批判を引き起こします。このテーマに関するブログ投稿をしようとしていましたが、残念ながら、コードの作成ほど生産的ではありません。
tl; dr再利用し、理解しやすい大規模で複雑なものを作成するには、小さな専用モジュールが必要です。
人々はコードの行数についてあまりにも心配しています。 LOCはまったく関係ありません。 モジュールが1行で構成されていても、数百行で構成されていても構いません。 複雑さを隠すことがすべてです。 ノードモジュールをレゴブロックと考えてください。 あなたはそれらが何でどのように作られているかに興味がありません。 知っておく必要があるのは、これらのキューブを使用してレゴキャッスルを構築する方法です。 小さく特殊なモジュールを作成することにより、個々の部品の動作を制御することなく、大きく複雑なシステムを簡単に構築できます。 短期間の記憶には限りがあります。 これらのモジュールは他の人が再利用することができ、各改良点および修正されたバグはそれらすべてを受け取ります。
PCメーカーがプロセッサを自分で作ったと想像してください。 ほとんどの人はそれをひどくします。 コンピューターはより高価になり、イノベーションは遅くなります。 代わりに、ほとんどがIntel、ARMなどを使用しています。
そして、npmがそのように機能しなかった場合、それは不可能です。 マルチレベルの依存関係の利点は、使用する依存関係の依存関係を制御する必要がないことです。 これが彼の強さです。
数年前、Node.jsとnpmの前に、必要なときにプロジェクトにコピーしたスニペットの大きなデータベースがありました。 これらは、時に役立つ便利な小さなユーティリティでした。 現在、npmは私のスニペットデータベースです。 モジュールを
修正し、必要なものを正確に取得できる場合は、コピーアンドペーストする理由。 スニペットのバグを修正するのは、1つのモジュールを更新するだけで、スニペットが挿入されるすべての場所を手で修正することではありません。
たとえば、
負のゼロモジュールがあります。 彼の仕事は、数字が
-0
ことを教えてくれることです。 通常、これは必須ではありませんが、必須です。 そして、数値が
-0
であることをどのように判断しますか。 非常に簡単、
x === 0 && 1 / x === -Infinity
。 だから? このように機能する方法と理由を本当に知る必要がありますか?
negative-zero
を接続し、他のことに集中したいです。
別の例。 npmで最も人気のあるモジュールの1つは
Chalkです。 これを知らないかもしれませんが、実際には
一連のモジュールです。 モジュールを使用
して、ターミナルのカラーサポートを
決定し、 ANSIコードなどを
受信します 。 これはすべてメインモジュールに含めることができます
が 、ほとんどの場合、ほとんどの場合です。 しかし、これは誰かが端末で文字列を操作するための別のモジュールを作成し、車輪を再発明することを意味します。 同じモジュールのセットを使用すると、人々はプロジェクトでChalkを使用することで簡単に恩恵を受け、さらにChalk自体を間接的に改善し、依存関係の1つを改善することさえできます。
そして別の例。
ユーザーのホームモジュールは、ユーザーのホームディレクトリを取得するためにのみ必要です。
process.platform === 'win32' ? process.env.USERPROFILE : process.env.HOME
書くよりも簡単だと思うかもしれません
process.platform === 'win32' ? process.env.USERPROFILE : process.env.HOME
process.platform === 'win32' ? process.env.USERPROFILE : process.env.HOME
。 そして、ほとんどがそうします。 しかし、本当に、なぜ私たちはそれぞれホームディレクトリを取得する方法を知っている必要がありますか? 完成した「レゴキューブ」を使用してみませんか? もちろん、このチェックが不完全であることを知らないかもしれません。 Windowsでは、
process.env.HOMEDRIVE + process.env.HOMEPATH
も
確認する必要があり
ます 。
また、追加のチェックを行うこともでき
ます 。 レゴ。
自分の靴を縫わないの? いいえ、店舗で購入します。 ほとんどの人は靴の作り方を気にしません。 足元にどれだけうまく座っているか。
プログラミングを簡単にしたいです。 プログラミングを簡単にすることは、信頼できるシステムを構築することです。 そして、私のビジョンの実用的な方法は、すべてを再発明し、同じ愚かな間違いを何度も繰り返すのをやめることです。