Pertanyaan konvensi nama acara javascript / DOM


Hai ketika saya mulai melakukan pengembangan web, saya menyadari nama acara javascript semuanya dalam huruf kecil tanpa pemisah, yaitu "mousedown", "mouseup", dll. Dan ketika bekerja dengan pustaka jQuery UI, saya perhatikan mereka juga menggunakan konvensi yang sama; yaitu "dropdeactivate" seperti pada contoh berikut

javascript $( ".selector" ).on( "dropdeactivate", function( event, ui ) {} )

Meskipun ini bekerja dengan baik untuk nama yang hanya 2 atau 3 kata, itu benar-benar mengerikan untuk nama dengan lebih banyak kata di atasnya.

Terlepas dari ini saya mengikuti konvensi itu juga ketika saya harus memecat kejadian khusus (sintetis) yang saya buat, sampai baru-baru ini ketika saya memutuskan lebih baik untuk mulai menggunakan beberapa bentuk pemisah. Sekarang saya menggunakan sesuatu seperti "drop: nonaktifkan", atau "app: siap".

di iOS apple baru-baru ini menambahkan acara ini untuk API Airplay HTML 5, dan saya setuju dengan autor dari posting ini http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review ketika dia berkata:

kupikir "webkitcurrentplaybacktargetiswirelesschanged" telah memenangkan rekor: nama acara JavaScript terpanjang yang pernah ada.

Apa alasan di balik konvensi aneh ini? mengapa tidak menggunakan bentuk pemisah atau konvensi camelCase untuk menamai acara dengan cara yang lebih mudah dibaca?

Saya pikir ada alasan untuk itu, banyak orang pintar yang bekerja pada ini ... Tapi setelah beberapa saat saya masih bertanya-tanya mengapa?


32
2017-09-28 20:55


asal


Jawaban:


Sayangnya, tidak sesederhana itu ketika Anda berurusan dengan konvensi lama. Dan DOM Events memiliki banyak sejarah di belakang mereka.

Berikut ini bagaimana atribut jenis Peristiwa didefinisikan dalam spesifikasi Peristiwa DOM2:

Peristiwa Antarmuka (diperkenalkan di DOM Level 2)
mengetik (tipe DOMString, hanya baca)

Nama acara (case-insensitive). Nama harus berupa nama XML.

Alasan di balik ini, saya kira, dijelaskan oleh paragraf ini dalam dokumen yang sama:

Dalam HTML 4.0, pendengar acara ditetapkan sebagai atribut dari suatu   element. [...] Untuk mencapai kompatibilitas dengan HTML 4.0,   pelaksana dapat melihat pengaturan atribut yang mewakili acara   penangan sebagai pembuatan dan pendaftaran EventListener di   EventTarget.

Sekarang, sementara sikap telah berubah di DOM3 (di mana nama acara berada hal - hal sensitif), pendekatan asli, saya kira, dianggap sebagai taruhan teraman - jadi orang tidak perlu bergantung pada kebenaran agen pengguna (periksa diskusi ini dan masalah lucu ini sebagai contoh).

Perhatikan bahwa W3C sendiri telah mendaftarkan seluruh kejadian CamelCased di DOM2 (semua MutationEvents, DOMActivate, DOMFocusIn dan DOMFocusOut).


17
2017-09-28 21:23



Sejauh yang saya tahu, tidak ada praktik resmi mengenai subjek itu. Tampak bagi saya bahwa sejak camelCase adalah standar yang berlaku umum untuk nama di js, bahwa hal yang sama akan berlaku dengan penamaan acara. Namun, seperti yang Anda catat, js itu sendiri dan banyak perpustakaan melakukan sebaliknya. Saya telah melihat kedua konvensi yang digunakan oleh para programmer hebat, jadi saya percaya itu hanya tidak penting. Dalam kasus "nama acara JavaScript terpanjang yang pernah", itu contoh yang bagus dari acara yang seharusnya menggunakan camelCase, menurut pendapat saya ... atau mungkin mereka hanya dapat memendekkannya :)

Jika Anda ingin tetap menggunakan apa yang sudah sering Anda lihat, gunakan huruf kecil. Jika Anda pikir itu keras pada mata (saya lakukan), gunakan camelCase. Saya mungkin tidak akan menggunakan yang lain jika Anda mencoba menyesuaikan dengan standar.


6
2017-09-28 21:11



ketika datang ke konvensi, itu dengan cara atau yang lain, kebiasaan, kerangka JavaScript tampaknya mengikuti konvensi API acara DOM JavaScript, saya tidak tahu apakah ada alasan atau setidaknya alasan yang jelas mengapa, tetapi itu saja. untuk konvensi umum, crockford adalah salah satu referensi terbaik yang ada, tetapi tidak ada menyebutkan untuk penamaan acara, tetapi pada saat yang sama sini Kejadiannya agak berbeda, yang membuat saya menganggapnya sebagai masalah pilihan, tidak lebih, tidak kurang


1
2017-09-28 21:12