0

特定のタスクに焦点を当てた複数のJavaScriptファイルを使用して、アプリケーションのロジックを分離しようとしています。

JSfile内で定義された関数は、ファイル自体の間でアクセスする必要があります。

関数を呼び出す順序が重要であり、「グローバル」スコープと「ローカル」スコープを定義することが重要であることを理解しています。次のファイルでは、ファイルは関数でラップされていないため、グローバルスコープにあると思います。

file1.js

function addingToDOM(stuff) {
...  
...
}

file2.js

// call addingToDOM
addingToDOM(someStuff);
function doOtherTHings() {
...
...
}

HTML(ファイルの順序)

<script src="file1.js"></script>
<script src="file2.js"></script>

エラー
addingToDOM is not defined

file2.jsHTMLでfile1.js後に呼び出します。 なぜ定義されていないのかわかりません。 file1.js

4

3 に答える 3

3

JSファイルは、関数を定義し、同じJSファイルにある関数を呼び出す必要があります。別のJSファイルから関数を呼び出す場合は、そのJSファイルを最初にロードする必要があります。すべての呼び出しコード(Cのような他の言語の「メイン」関数のようなもの)を1つの場所、できればhtmlドキュメントの最後に配置します。結局のところ、他のJSファイル(およびマークアップ)がロードされます。file2からfile1の関数を呼び出せないわけではありません。コードの実行を開始する前に、両方を完全にロードする必要があります。

セットアップはそのままで機能するはずですが、JSファイル内からではなく、HTMLドキュメントの最後で実行する必要がある最初の関数を必ず呼び出してください。

于 2013-01-19T22:14:11.173 に答える
1

この問題は、スクリプト タグでの src 属性の引用のように見えます。HTMLでこれを試してください:

<script src="file1.js"></script>
<script src="file2.js"></script>
于 2013-01-19T22:17:22.123 に答える
1

次のようなものを探しているかもしれませんrequire.js: モジュールをロードする順序などを指定することで、複数の JS ファイル間の依存関係を簡単に管理できます。

http://requirejs.org/

それに加えて、本番環境では、すべてのコードを含む JavaScript ファイルを 1 つだけにすることをお勧めします(サードパーティ ライブラリは通常、まだ別のものです)。このファイルは圧縮できるため、複数のファイルよりも小さくて高速にダウンロードできます。しかし、それは開発中はそれほど重要ではありません。

編集:ところで、require.js生産用のすべてのモジュールから単一の縮小ファイルを生成する簡単な方法も提供します。

于 2013-01-19T22:19:23.717 に答える