coffee
-次の単純なコードスニペットのJSを生成しました。
console.log 'b' if 'b' in arr
は
var __indexOf = [].indexOf || function(item) {
for (var i = 0, l = this.length; i < l; i++) {
if (i in this && this[i] === item) return i;
} return -1;
};
if (__indexOf.call(arr, 'b') >= 0) {
console.log('b');
}
なぜそうなのか理解できます。IEはをサポートしていないためindexOf
、CSコードがすべてのブラウザでスムーズに実行されるようにする必要があります。ただし、Node.jsサーバーのコードを作成するときは、JSエンジンが何をサポートしているかを正確に把握しているため( ECMA-262、第5版)、上記のトリックは必要ありません。
私はさまざまなJavaScript実装にあまり精通していませんがcoffee -c
、ブラウザーの非互換性のために生成される非最適なコードはそれだけではないと確信しています。数千の同時接続がある本番サーバーでそれらすべてを考慮すると、コードへのかなりの不必要なオーバーヘッド。
これを改善する方法はありますか?最近、ますます多くのNode.jsコードがCSで記述されており、SourceMapが登場すれば、その数はさらに増えるでしょう...