0

私はJavaScriptが初めてで、言語をいじってそれをよりよく理解しようとしています。私が理解できないことの 1 つは、開発者が大きな JavaScript プログラムをどのように構築するかということです。Java の場合のように、ファイルを小さなファイルの束に分割すると想定しました。どうやらあなたはJavaScriptでこれをしていない..すべてが1つの巨大なファイルにあるのですか? それは私には正しくないようです。

たとえば、2 つのファイルが必要でした。1 つはすべてのヘルパー関数を含み、もう 1 つは問題固有の関数を含みます。問題固有のファイルでヘルパー関数を使用することを計画していました。

何かを 1 つの大きなファイルに入れることになっている場合、それをモジュールに分割しますか? このような長い投稿で申し訳ありません。私は非常に混乱しており、どのように表現すればよいか正確にはわかりません.

4

2 に答える 2

2

それは、アプリケーションの大きさに大きく依存します。1 回限りのフォーム ハンドラーの場合は、おそらくすべてのロジックを 1 つのファイルに入れることができます。ただし、それがより大きな単一ページのアプリケーションである場合は、複数のファイルに分割することを検討する必要があります。ファイルが相互にどのように相互作用するかは、ページに含まれる順序によって異なります。たとえば、あるファイルが別のファイルに依存している場合、そのスクリプトがプライマリ スクリプトの後にページに含まれていることを確認してください。

(スクリプトのインクルード順序を自分で管理するのではなく) 依存関係をより適切に整理し、正しい足取りで開始するには、おそらく RequireJS を参照する必要があります: http://requirejs.org/docs/start.html

これはサードパーティの紹介とチュートリアル です http://javascriptplayground.com/blog/2012/07/requirejs-amd-tutorial-introduction/

モジュール パターンの質問については、モジュール パターンを使用できますが、あるファイル内の 1 つのモジュールが別のファイル内の別のモジュールに依存している場合でも、同じ依存関係の問題が発生します。Eloquent Javascript のこの章をチェックしてみてください: http://eloquentjavascript.net/chapter9.html

于 2013-10-22T17:10:19.793 に答える
-1

これを行うために派手な js プラグインは必要ありません。html のメイン js ファイルの前に「ヘッダー ファイル」(すべての関数宣言) を含めるだけです。

例:

file1.js:

//declare your functions here
function handyFunction() {
 //do some handy stuff
}

file2.js:

//use them here
handyFunction();

html:

<body>
<!-- all your html here -->
<script src="file1.js" type="text/javascript"></script>
<script src="file2.js" type="text/javascript"></script>
</body>

すべてをグローバル オブジェクトに保持することに抵抗がある場合は、必要なメソッドを含むオブジェクトを保持し、必要に応じてそれらのインスタンスを作成するか、以前に作成したインスタンスにアクセスできます。簡単な例:

MyObject.js:

function MyObject() {
    this.property = "someValue";
}

MyObject.prototype.someMethod = function () {
    //do something
}

main.js:

var obj= new MyObject();
obj.someMethod();

html:

<!-- always remember to include your files in the correct order -->
<script src="MyObject.js" type="text/javascript"></script>
<script src="main.js" type="text/javascript"></script>

わかりました、最後にもう 1 つ説明します。JavaScript では、すべての変数は関数のスコープ内で宣言されます。ただし、存在しない場合は window オブジェクトに追加されます。これは関数スコープと呼ばれ、他の言語との大きな違いです。これが意味することは、ファイルで宣言するすべてのものは、1) グローバル オブジェクト (ウィンドウ) に追加されるか、2) 宣言された関数からのみアクセスできるということです。したがって、一部のコードを「匿名化」したい場合は、自動実行匿名関数をラップすることができます。関数にはそれを参照する変数がないため、そのコードは外部からアクセスできません。これがあなたが見る理由です(function() { /*...*/}());多くの場所で。では、このように宣言されたコードをファイル間で共有するにはどうすればよいでしょうか? 簡単です、名前を付けてください!このようにして、モジュール パターンが作成されます。最初のファイルでは、すべてのコードを「モジュール」という名前の変数またはヤギを浮かせるもので宣言し、その中にすべてのメソッドを好きな方法で配置します (たとえば、無名関数を使用してオブジェクトを返すなど)。 )。秘訣は、この「モジュール」オブジェクトをグローバル オブジェクトで宣言して、アプリケーション内の複数のファイルで使用できるようにすることです。本当にそれ以上のものはありません。

于 2013-10-22T17:13:27.270 に答える