2016-03-31 7 views
1

私はいくつかの部分でコードを分割する必要があるhtml5ゲーム(私のmain.jsで500行に向かって航行する)を開発する時点です。私はすでに異なるvarsと関数を適切にグループ化し、これらのブロックをmain.js - game.js - player.js - enemy.js、eccなどに移動し、htmlから正しい順序で実行させました。それが正常に動作しますJsプロジェクトファイルを整理する

<script src="main.js"></script> 
<script src="game.js"></script> 
<script src="player.js"></script> 
<script src="enemy.js"></script> 

が、すべての変数がある。この方法は、コンソールからアクセス可能である:それはそれを分割する前だったように私は、今働いている主なファイルを「再構成」に私は個々のスクリプトを自己実行機能にラップして、これを防止しようとしましたが(現時点では私のmain.jsですが)、このアプローチでは、範囲外になるためにはグローバルにアクセス可能な変数が必要になります。この場合、ベストプラクティスは何ですか?私はたくさんのことを読んでいますが、私が見つけたすべての解決策は私のような小さなプロジェクトのために私のjsのスキルやあまりにも抽象的ではないようです。誰かが正しい方向を指すことができますか?

ありがとうございます。

+0

自己実行機能では、IIFEを意味しますか?明確化のために... –

+0

webpack? ....... – zerkms

+0

名前空間を使用します。 – Andy

答えて

2

あなたが質問で苦労しているようだ:How should I modularize my app?

の代わりにHTMLでアプリの各依存関係を定義する:

<script src="main.js"></script> 
<script src="game.js"></script> 
<script src="player.js"></script> 
<script src="enemy.js"></script> 

WebpackBrowserifyであなたのコードをバンドルする方が良いだろう、または他のモジュールバンドラを使用することができます。そうすれば、<script>タグの注文に心配する必要はありません。

あなたは、あなたのHTML内の1個の<script>タグを含めることができるだろう:bundle.jsはあなたの全体のアプリのコード、あなたが使用している可能性のあるサードパーティの依存関係を含むファイルです

<script src="bundle.js"></script> 

。上記のモジュールバンドラを使用することにより、bundle.jsを生成することができます。

選択したモジュールバンドラのサポートに応じて、CommonJS、AMD、ES6などのタイプのモジュールを使用することができます。コードにmodulesを設定すると、オブジェクト、関数などをエクスポートできます。グローバルな名前空間を汚染しません。これにより、あなたは1つの巨大なファイルからあなたのアプリを切り離すことができます。

+0

ありがとうクリスチャン。これは私が苦労している問題です...モジュール境界の原則は、main.jsを別々のファイルに入れて1つのブロックとして動作させるコードの塊に分割することだけでしょうか?このアプローチを生産中にも使用すべきか、それともプロジェクト完了時に何かを行うべきか? – Uknowho

+0

はい、モジュールバンドラは 'main.js'を別のファイルに存在するチャンクに分割するのに役立ちます。 – Christian

+0

このアプローチは、生産だけでなく、開発でも使用できます。ただし、実稼働環境では、束ねたファイルを細分化してファイルサイズを小さくしたり小さくしたりする必要があります。 すべてのコードが1つのファイルに含まれている場合に、どのようにエラーをデバッグしたり表示したりすることができますか。ソースマップは、行番号と元のファイル名を参考にして役立ちます。モジュールバンドルやその他のビルドツールで生成できます。 – Christian

関連する問題