Saya telah membangun aplikasi web dengan GUI yang cukup kompleks - banyak elemen kecil di samping satu sama lain dan dalam elemen lain yang memerlukan berbagai perilaku (menyeret, mengklik, tetapi peka konteks).
Kode saya cenderung berfungsi seperti ini:
kontrol dimulai sebagai tag html
<li>
kemudian saya menambahkan kelas ke tag
<li class = 'static passive included'>
beberapa kelas mungkin untuk styling css untuk mempengaruhi penampilan
.static {background: blue; float: left;}
sementara yang lain ditindaklanjuti oleh jQuery untuk memberikan perilaku untuk peristiwa DOM terkait
$("#container").delegate(".passive", function {onclick : //do-stuff})
dan yang lainnya mungkin diambil oleh javascript normal saat memindai dokumen, mis. mengumpulkan nilai teks semua node dengan kelas 'termasuk'. Jadi elemen DOM tertentu adalah objek GUI yang mengimplementasikan kelas definted melalui kombinasi css dan jQuery.
Pertanyaan saya adalah, apakah ini cara yang baik untuk bekerja? Dan juga apakah ini benar-benar 'dekorator' - mereka tentu saja 'menambah tanggung jawab tambahan pada suatu objek secara dinamis' tetapi saya tidak yakin tentang istilah itu. Akhirnya, apakah Anda menggunakan pola ini di situs Anda sendiri?
sumber
Kelasnya oke, tapi saya akan pertimbangkan atribut data HTML juga. Seringkali, nama kelas tidak menyampaikan informasi yang cukup untuk mengaktifkan kait javascript yang sesuai (tanpa nama elemen pengodean-hard-coding). Atribut data HTML menyediakan cara lain untuk mengklasifikasikan dan memilih elemen dan melampirkan data pada mereka untuk tujuan tambahan, seperti perangkat tambahan berbasis JavaScript.
Dengan jQuery, atribut data HTML sama mudahnya dengan kelas CSS.
sumber
Hmmm ... ya dan tidak. Tidak apa-apa untuk melakukan hal-hal seperti itu, tetapi kelas benar-benar harus dinamai untuk menunjukkan apa yang umum tentang data di dalamnya. Jika tidak ada yang umum di antara dua tag maka ada kemungkinan bahwa persyaratan kelas akan berbeda di kemudian hari.
Persyaratan contoh:
Apakah lebih baik memberi mereka berdua kelas whiteonblue di mana
atau memiliki kode berulang
Saya berpendapat yang terakhir. Tidak ada hubungan antara navitem dan commentdescs dan dengan demikian kemungkinannya adalah bahwa ketika satu berubah, yang lain tidak akan. Apakah Anda benar-benar ingin harus menelusuri html untuk kelas yang tepat, menghapus kelas, menambahkan yang baru (whiteonred) sebelum pergi ke CSS pada saat itu? Bukan saya.
Demikian juga Javascript. Mungkin Anda menginginkan hal yang sama klik pada desain awal tetapi kemungkinannya adalah bahwa jika satu berubah, yang lain tidak. Cukup mudah untuk dikatakan
Jika Anda tetap pada kebijakan ini, saya kira Anda akan menemukan bahwa pertanyaan Anda hilang dengan cepat, tetapi di mana tidak maka apa yang Anda lakukan baik-baik saja.
sumber