私はいくつかの機能を含むプロジェクトに取り組んでいるので、必要に応じてコードをロードできるように、個別の JavaScript ファイルで各機能を整理しようとしています。ロードと実行のプロセスを標準化したいので、JavaScript ファイルがメモリに存在しない場合はロードして実行するか、既にロードされている場合は単に実行できる関数を開発しようとしています。1 つの方法は、ファイル名とエントリ ポイント関数の名前の 2 つのパラメータを必要とする関数を作成し、スクリプトが既にロードされているかどうか、エントリ ポイント関数を実行するだけの場合、またはそうでない場合は、それを確認することです。スクリプトをロードし、onload イベントでエントリ ポイント関数を実行します。このアプローチは正常に機能しますが、メイン モジュールがすべてのエントリ ポイント関数名を認識している必要があります。不注意なプログラマーがうっかり関数名を複製する可能性があるため、将来的には首の痛みになる可能性があります。よりクリーンで安全なアプローチは、すべてのエントリ ポイント関数に「main」という名前を付け、最初の実行時にその「main」をそのスクリプト DOM オブジェクトに関連付けることです...多かれ少なかれ次のようになります。
ロードされたモジュール:
function(){
function main(){
.
. some code here
.
}
Install(getThisFileName(),main);
}();
メインモジュール:
function Load(fn){
var el,ff,i
el = document.getElementsByTagName("script");
ff = "http://"+window.location.host+fn;
for(i=el.length-1;i>=0;i--){
if(el[i] && el[i].src==ff){
el[i].Main();
return;
}
}
el = document.createElement("script");
el.type = "text/javascript";
el.src = ff;
}
function Install(ff,ep){
var el,i;
el = document.getElementsByTagName("script");
for(i=el.length-1;i>=0;i--){
if(el[i] && el[i].src==ff){
el[i].Main = ep;
ep();
return;
}
}
}
しかし、そのためには、実行中の JavaScript ファイルの名前を知る必要がありますが、それが可能かどうかさえわかりません。何か案は?