問題
このトピックから、WebページでJavaScriptについて説明することは既に明らかです。 一般に、JavaScriptのインクルードの問題を非常に長い間心配している人が多いようです(たとえば、 hereとhere )。
現在の私のアカウントには、PHP +(JavaScript + HTML)のアプリケーションが1つしかありません。その開発の終わりのどこかで、ページヘッダーに
<script>
タグを常に記述し、1つのJavaScriptファイルなどに大量のコードを詰め込むことに完全にうんざりしていました物事。 しかし、私がこのアプローチで最も気に入らなかったのは、異なるファイルにあるコード間の依存関係を特定できないことでした。
理想的には、ファイルヘッダーに次のようなものを書きたいと思います。
import 'folder/file.js';
既知のソリューション
私が知っている解決策のうち、少なくともApacheで遅延読み込みまたはSSIとmod_includeを使用する機能があります。
特にライブラリの一部として同様のモジュールに遭遇したように見えるので、私はオリジナルのふりをしません。 ただし、必要な機能を別のライブラリの形で簡単に見つけることはできませんでしたが、アイデアは非常に単純であり、間違いなく私のアイデアではありませんでした。 したがって、コメントでこれがなぜ必要ないのかを教えていただければ嬉しいです。
代替アプローチ
一般的に、ポイントを取得しましょう。 誰もがCSSプリプロセッサを知っており、積極的に使用しています。その一部はサーバー上のソースファイルを解析し、クライアントは既製のCSSファイルを1つ受け取ります。 もちろん、このようなプリプロセッサでは、他のファイルを含めることができます。 JavaScriptに対して同様のアプローチを使用することをお勧めします。
少し時間をかけて、JsPPPというモジュールを入手しました( ソースとテストはgooglecodeにあります)。 このモジュールの最終的なユースケースを検討してください。
- まず、ライブラリの最新バージョンをダウンロードする必要があります。
- アーカイブの内容をサーバー上のディレクトリに配置します。 明確にするために、これをルートディレクトリのjspppディレクトリとします。
- これで、ブラウザのアドレスバーにyourdomain.com/jsppp/js.php?test.jsのように入力することができます。 2つのファイルの内容を見れば、すべてが機能します。
test.jsファイルを見てみましょう。
//#>import 'subdir/test2.js' function test1() { alert('test1'); }
ご
//#>import 'subdir/test2.js'
、コード
//#>import 'subdir/test2.js'
は、js.phpを介して渡すときにsubdir / test2.jsファイルをtest.jsファイルに接続します。 この機能を利用するために知っておく必要がある最後のこと:js.phpファイルでは、プロジェクトのすべてのJavaScriptファイルが置かれているディレクトリの名前(つまり、接続されたファイルが検索されるディレクトリ)を簡単に見つけることができます。 このパスは、パラメーターとしてJsPreprocessorオブジェクトのコンストラクターに渡されます。 必要なものに修正する必要があります。
昔ながらの方法でJavaScriptを有効にする
そのため、js.phpファイルはJavaScriptファイルを処理し、すべての依存関係を持つ1つのアセンブルされたJavaScriptを生成します。 念のため、上記の形式のディレクティブを使用してファイルに
<script src="..."></script>
設定し、依存するすべてのファイルを接続できるようにする追加機能があります。
これは、
GetScriptLinks
関数を呼び出すことで
GetScriptLinks
ます。
echo $preprocessor->GetScriptLinks("filename.js", "www_path_to_js_dir");
最後に
もちろん、ライブラリにはバージョン0.1のマークが付いています。 これは、これらすべてが完全なナンセンスではないことが突然判明した場合、次のことができることを意味します。
- サーバー上のキャッシュを解決します。
- クライアント(ETag、If-Modified)および301リダイレクトのキャッシュを作成します。
- ミニマイザーを接続します。
- 遅延読み込みによってディレクティブを処理するオプションを作成します。