私は自分のグループのASP.NETMVC3プロジェクトにバンドルを使用することを考えていますが、私はジュニア開発者であるため、それを破ることはできません。
JavaScriptの縮小はJavaScript関数名に影響しますか?つまり、インラインコードから同じ名前で縮小した関数を呼び出すことはできますか?また、コードの動作に影響を与えることはありますか?またはJavaScriptの機能と順序が完全に保持されますか?
私は自分のグループのASP.NETMVC3プロジェクトにバンドルを使用することを考えていますが、私はジュニア開発者であるため、それを破ることはできません。
JavaScriptの縮小はJavaScript関数名に影響しますか?つまり、インラインコードから同じ名前で縮小した関数を呼び出すことはできますか?また、コードの動作に影響を与えることはありますか?またはJavaScriptの機能と順序が完全に保持されますか?
バンドルとミニファイは、関数名の名前を変更することによってコードを壊すことはありません。ミニファイは、不要な空白を削除し、コメントを削除し、変数名を1文字に短縮することで、コードを最適化します。
この関数を作成するとします。
function BigHonkingFunctionName(bigvariablename1, bigvariablename2) {
//I love this function
alert(bigvariablename1 + " " + bigvariablename2);
}
縮小された結果は次のようになります。
function BigHonkingFunctionName(n,t){alert(n+" "+t)}
ご覧のとおり、関数の呼び出し方法や使用方法には影響しません。
バンドルとミニファイについて読む。
通常、Javascriptの縮小は関数名を変更しないため、心配することなく使用できます。Javascriptの縮小は通常、空のスペース、改行文字を削除し、ローカル変数名を短縮し、関数パラメーター名を短縮します。
eval
ただし、アクセス範囲で定義された変数を参照しているステートメントをコードで使用すると、問題が発生する可能性があります。一部のミニファイアはステートメントに触れませんeval
。これは、によって参照される変数の名前がツールによってミニファイされている場合、少し問題になる可能性がありeval
ます。
たとえば、次のJavascriptコードブロックは次のように縮小できます。
ソースJS:
function eval_test(var_1, var_2) {
var_1 = "Updated var_1";
var_2 = "Updated var_2";
var a = eval("var_1 * var_2") + "<br>";
}
縮小されたJS:
function MyFunction(n,t){n="Updated var_1";t="Updated var_2";
var i=eval("var_1 * var_2")+"<br>"}
この例では、関数のパラメーター、がそれぞれに縮小されているため、eval
呼び出しは縮小後に中断されます。しかし、ステートメントはまだ変更されていません。var_1
var_2
eval_test
n
t
eval
それでも、一部の縮小ツールはパラメーター/変数名を縮小しません。そのような場合、evalステートメントは完全に正常に機能します。ただし、縮小されていないパラメーター/変数名を保持すると、コードが適切に圧縮/縮小されない可能性があるため、縮小に悪影響を及ぼします。
次のオンラインミニファイツールを試して、ミニファイされた出力をテストおよび検証できます。
http://utilninja.com/Computing/JavascriptMinifier
それは有効な懸念事項です。おそらくJavascriptファイルがどのように構築されているかに依存し、今ではバンドラーが機能します。多くの場合、バンドラーはすべてを把握し、そこに必要なものをそのままにしておくという素晴らしい仕事をします。
多くのバンドラーには、オプションを有効または無効にする構成オプションがあるため、システムを希望どおりに構成したり、問題が発生したりした場合に使用できる可能性があります。