2016-05-25 3 views
0

jqueryソースを読んで理解していますが、学習のためにgithub repoです。jQueryソースのあまり単純なモジュールの目的を理解する

私はいくつかの過度に単純なコードが別々のモジュールに入れられているのを見ました。それはjqueryの源であると言う、例えば、arr.js hereのみ、以下のコードが含まれてい

define(function() { 
    "use strict"; 

    return []; 
}); 

は、それにはいくつかの有用性がなければなりません。

ここで、空の配列だけを返すモジュールの定義のポイントは何ですか?

私はモジュールのコンセプトは、大きな複雑なコードを小さな再利用可能なチャンクとそれに類するものに分解することです。

助けが必要ですか?

ありがとうございます。

編集。ダウン有権者とこの質問は、SO

私は非常に人気のあるオープンソースから学ぶことを試みているため

意見に基づく質問とそのためではない良いと思います人のためにいくつかの明確化

としょうかん。そしてそこに私は明確に理解できなかったものを見た。 これはベストプラクティスであるかもしれないし、全体的にはの素晴らしいコーディング方法かもしれない。だから私はこの質問に、より多くの洞察力/コードの理解を得るように頼んだ。それは技術的な質問ですので、私は尋ねました。[ここにいなければ私はどこに尋ねるのですか?]あなたが質問が誤って尋ねていると感じた場合

私は誰の意見

をお願いしていなかったので、それを使用してください、誰もがそれを編集するための力を与えました。

+1

これはおそらく、との意見に基づく質問、したがって、SOのために良いではありません。私が推測しているのは、このモジュールを抽象化して戻り値と配列を抽象化したいということです。将来的にはこの配列に追加のロジックが必要な場合、モジュールは残りのコード変更とすでに切り離されています呼び出し元との契約のみが満たされる必要がある(つまり、他のロジックが追加されても空の配列を返さなければならない)という点で実装が簡単です。 –

+0

"何かを理解したい"ということは、どうやって悪いことでしょうか?私は誰の意見でもない説明をしたかっただけです。私たちは、jQueryのようなオープンソースライブラリから学び、学ぶべきです。そして、学習中に問題に直面すれば、どこで質問しますか?つまり、このように、すべての質問は「意見に基づく質問として拒否される可能性があるので、SOには適していません」。申し訳ありませんが、ショックを受けました... @MikeBrant – TruthSeeker

+0

物事を理解しようとすると何も問題はありません。しかし、この質問に答える誰かがjQuery開発チームの一員でない限り、あなたが得られる答えは、なぜ誰かがこのアプローチを採用する理由についての意見になります。私は上記の私の意見で私の意見を述べましたが、それはちょうどその意見です。私は最終的になぜこの特定の機能を抽象化するのかを知りません。 –

答えて

1

arrの履歴を見れば、

AMD-IFYのjQuery

https://github.com/jquery/jquery/commit/6318ae6ab90d4b450dfadf32ab95fe52ed6331cb

AMDは非同期モジュール定義の略: JS、あなたは元のようにそれを記述コミットいることがわかります。 AMDの目的は、jQueryコードのモジュール性を提供することです。ここでは目的を説明する良い記事です:私たちは、アプリケーションがモジュール化されていると言うとき

は、我々は一般的には、モジュールに 保存された機能性の高いデカップリング、異なる部分の一連の 構成されますを意味します。あなたが知っているように、ゆるやかな結合は、可能であれば依存関係を取り除くことによって、アプリケーションの保守性を容易にしやすくします。 これが効率的に実装されている場合、システムの一部が に変更されたことが、他のシステムにどのように影響するかを非常に分かりやすくします。

https://addyosmani.com/writing-modular-js/

0

"厳格な使用"を強制すると思います。

非strictモードで

このモジュールの

define(function() { 
    "use strict"; 

    return window.document; 
}); 

あなたはstrictモードではwindow.document = 10

を行うことができます "

は、オブジェクトの唯一のプロパティ「文書」を読むために割り当てることができませんエラーです# '

また、簡単な方法で小さなモジュールを作成することもできます後でリファクタリングする

関連する問題