はJSが必要です。実行時に非圧縮ファイルをロードする機能も欲しい。
これは代わりにsource mapsを使用するのが最適です。縮小されたファイルに対してソースマップが存在する場合、ブラウザーはそれを使用して、実際の生コードがなくてもミニコードを元のバージョンに即座に戻すことができます。
修飾子には、縮小されたコードとともにソースマップを生成するオプションがあります。 RequireJSオプティマイザafaikは、ソースマップを生成できるUglify2を使用します。
ソースマップは、特に運用前の環境で優れています。プロダクション環境のように、この機能を無効にしたい場合は、ソースマップファイルを配備しないでください。
実稼働環境では、セッションレベルの「デバッグ」フラグを使用して、ブラウザから密かに入力することができます。
ところで、これはひどい考えです。この設定は、単なるオーバーヘッドで、コードクラフトです。
あなたが本当にデバッグ目的のために、生のソースおよび生産のためのコンパイルされたバージョンをロードすることを主張した場合、あなたは単にコンパイルされていないコードのエントリポイントスクリプトを使用してコンパイルされたスクリプトを交換することができます。これは、サーバー上にrawとコンパイルの両方のバージョンがあることを前提としています。あなたは、単に行うことができ、次の例(PHP)で
は、main.js
は生のソースのエントリポイントスクリプトであると仮定すると、main.min.js
は、コンパイルされたバージョンで、$debug
は、使用しているものモードサーバーを伝えるいくつかの値です。
<script src="path/to/require.js"></script>
<? if($debug): ?>
<script src="path/to/main.js"></script>
<? else: ?>
<script src="path/to/main.min.js"></script>
<? endif; ?>
ただし、生のソースは、コンパイルされたソースとは異なる動作をする可能性があります。修飾子は、予期しないショートカットを使用してコードを前提とする傾向があります。これにより、生バージョンとコンパイルされたバージョンの動作が異なることがあります。
ソースマップを使用していただきありがとうございます。 私は個人的に以下の理由でそれらをデバッグに使用しません。 *一部のブラウザではサポートされていません。私たちのアプリは古いブラウザで動作します。 *関数名は呼び出しスタック内のmangleであり、読み込み可能ではありません。 *ソースマップの場合でも、ローカル変数名はほとんどのブラウザではまだ変更されています。 私は元の質問で尋ねたことがどれほど簡単にできるのかはまだ不思議です。 ありがとうございます。 – Marc