Kompresor YUI mengkompres konten JavaScript termasuk:
- Hapus komentar
- Hapus spasi tambahan
- Pengoptimalan kecil
- Penggantian Pengenal
Pengoptimalan halus apa yang disertakan dalam Kompresor YUI?
- object["property"] , jika nama properti adalah pengidentifikasi JavaScript yang sah (catatan: pengidentifikasi JavaScript yang sah dimulai dengan sebuah huruf, secara opsional diikuti oleh satu atau lebih huruf, angka, atau garis bawah) dan bukan kata-kata yang dicadangkan, akan dioptimalkan ke: objek.properti
- {"property":123}, jika nama properti adalah pengidentifikasi JavaScript yang sah dan bukan merupakan kata yang dicadangkan, maka akan dioptimalkan menjadi {property:123} (Catatan: Dalam literal objek, jika nama properti adalah pengidentifikasi JavaScript yang sah dan bukan merupakan kata khusus dan tidak perlu mengutip nama properti).
- 'abcd'efgh', akan dioptimalkan menjadi "abcd'efgh".
- "abcd" + "efgh", jika string terhubung, akan dioptimalkan menjadi "abcdefgh" (Catatan: Semua berdasarkan premis menggunakan Kompresor YUI, untuk koneksi string dalam skrip, efisiensi dan efisiensi menggunakan konektor "+" adalah pemeliharaan tertinggi).
Optimalisasi kompresi yang paling efektif untuk JavaScript adalah penggantian pengenal.
Misalnya:
(fungsi(){
fungsi tambah(angka1, angka2) {
kembalikan nomor1 + nomor2;
}
})();
Setelah mengganti pengidentifikasi genus:
(fungsi(){
fungsi A(C, B) {
kembalikan C+B;
}
})();
Setelah menghapus spasi tambahan, kita mendapatkan:
(fungsi(){fungsi A(C,B){mengembalikan C+B;}})();
Penggantian pengidentifikasi kompresor YUI hanya menggantikan nama fungsi dan nama variabel, jadi apa yang tidak bisa diganti?
- Nilai primitif: string, boolean, angka, null, dan tidak terdefinisi. Secara umum, string menempati ruang paling banyak, diikuti oleh literal non-numerik (true, false, null, underfinded).
- Variabel global: jendela, dokumen, XMLHttpRequest, dll. Yang paling umum digunakan adalah dokumen dan jendela.
- Nama atribut, seperti: foo.bar. Ruang yang ditempati adalah yang kedua setelah string. Operator "." tidak dapat diganti, dan abc menghabiskan lebih banyak ruang.
- Kata kunci. Kata kunci yang sering digunakan secara berlebihan adalah: var, return. Metode optimasi terbaik: kata kunci var dan return hanya muncul sekali dalam suatu fungsi.
Perlakuan optimasi untuk nilai primitif, variabel global, dan nama atribut kurang lebih sama: nilai literal, variabel global, atau nama atribut apa pun yang digunakan lebih dari 2 kali (termasuk 2 kali) harus diganti dengan penyimpanan variabel lokal.
Namun, ada beberapa situasi di mana penggantian pengenal dilarang:
- Gunakan fungsi eval(). Solusi: Jangan gunakan atau buat fungsi global yang merangkum eval().
- Gunakan pernyataan with. Solusi: Caranya sama seperti di atas.
- Komentar bersyarat untuk JScript. Satu-satunya solusi: jangan gunakan itu.
Karena Kompresor YUI dibangun di atas penerjemah badak , semua pengoptimalan di atas aman.
Bacaan lebih lanjut:
"Kompresi JavaScript Ekstrim Dengan Kompresor YUI"
asli:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/