Pengenalan
Untuk akhirnya menutup Fasa-1 kurikulum Kejuruteraan Perisian Sekolah Flatiron, kami telah ditugaskan untuk mencipta aplikasi web satu halaman hanya menggunakan HTML, CSS dan JavaScript, serta menggabungkan API awam yang akan menyediakan data untuk halaman web kami.
Untuk projek saya, saya memutuskan untuk mencipta apl cuaca saya sendiri bertajuk, 'Ramalan Cuaca Hari Ini'. Walaupun projek itu sendiri diakui agak asas, ia adalah satu cabaran yang menyeronokkan untuk diambil. Matlamatnya adalah untuk membina aplikasi responsif mesra pengguna yang menyediakan kemas kini cuaca masa nyata dan ramalan terperinci untuk mana-mana bandar di dunia.
Keperluan Projek
Projek ini datang dengan beberapa keperluan, setiap satu mengukuhkan konsep asas dan pelajaran yang diajar sepanjang Fasa-1:
Aplikasi mesti dijalankan sepenuhnya pada satu halaman. Tiada ubah hala atau muat semula dibenarkan dan data mesti datang daripada API awam atau fail db.json.
Fail API atau db.json mesti mengembalikan sekurang-kurangnya lima objek berbeza, setiap satu mengandungi sekurang-kurangnya tiga atribut.
Semua interaksi klien dan API harus dikendalikan secara tidak segerak, menggunakan JSON sebagai format komunikasi.
Projek mesti menggunakan sekurang-kurangnya tiga pendengar acara unik, setiap satu mendengar untuk jenis acara yang berbeza, ditambah menggunakan kaedah addEventListener(). Setiap pendengar acara mesti mempunyai panggilan balik uniknya sendiri.
Aplikasi mesti melaksanakan sekurang-kurangnya satu contoh lelaran tatasusunan.
Saya secara peribadi mendapati pelaksanaan pada API adalah yang paling mencabar, sebahagiannya disebabkan oleh ketidakpastian saya sendiri tetapi juga kerana konsep itu dirasakan paling asing bagi saya. Walau bagaimanapun, selepas beberapa penerokaan, saya mendapati bahawa pelaksanaan API sebenarnya adalah salah satu aspek yang lebih mudah dalam projek ini.
Ciri-ciri 'Ramalan Cuaca Hari Ini':
Kemas Kini Cuaca Masa Nyata
Apabila pengguna memasukkan nama bandar, aplikasi akan mengembalikan data cuaca masa nyata khusus untuk lokasi tersebut. Halaman hadapan akan memaparkan suhu semasa dalam celsius, penerangan cuaca ringkas dan ikon untuk mewakili ramalan secara visual.
Ramalan 3 Jam:
Aplikasi ini juga menyediakan ramalan 24 jam dalam selang 3 jam. Bahagian ini memaparkan kepada pengguna kedua-dua masa semasa hari dan suhu yang diramalkan dalam celsius.
Kemas Kini Dinamik:
Semua data diambil dan dipaparkan secara dinamik tanpa memuatkan semula halaman, memastikan pengalaman pengguna yang lancar.
Bagaimana Saya Memenuhi Keperluan
Aplikasi Satu Halaman
Aplikasi cuaca ini beroperasi sepenuhnya pada satu halaman. Apabila pengguna mencari bandar, JavaScript mengambil data yang diperlukan, mengosongkan kandungan lama dan mengemas kini halaman secara dinamik dengan maklumat baharu—semuanya tanpa ubah hala atau muat semula.
Lima Objek dengan Atribut
Objek berikut telah dilaksanakan:
1.) Objek Bandar:
Atribut: Termasuk nama, latitud dan longitud.
2.) Objek Cuaca:
Atribut: Termasuk suhu, perihalan dan ikon.
3.) Objek Ramalan:
Atribut: Termasuk masa, suhu dan ikon.
4.) Objek TarikhMasa:
Atribut: Termasuk tarikh, masa dan hari.
5.) Objek Elemen DOM:
Atribut: Termasuk id, jenis dan kandungan.
Setiap objek memainkan peranan dalam menstruktur data dan memastikan modulariti.
Pengendalian API Tak Segerak
Menggunakan API pengambilan, apl itu mendapatkan semula data cuaca dan ramalan masa nyata daripada OpenWeather API. Semua interaksi data menggunakan JSON, memenuhi keperluan projek.
Tiga Pendengar Acara Unik
Apl ini menggabungkan tiga pendengar acara yang berbeza:
Acara Klik: Apabila pengguna mengklik butang "Cari", ia mengambil data cuaca.
Acara Tekan Kekunci: Apabila kekunci "Enter" ditekan dalam medan input, ia mencetuskan fungsi pengambilan cuaca yang sama.
Acara Tetikus: Apabila pengguna menuding pada ikon cuaca, maklumat tambahan (cth., "Data disediakan oleh OpenWeatherMap") dipaparkan secara dinamik.
Cabaran dan Penyelesaian
Beberapa cabaran yang saya hadapi semasa projek ini ialah memahami cara mengendalikan operasi tak segerak semasa mengambil data daripada OpenWeather API, serta memahami API itu sendiri dan cara ia berbeza daripada fail db.json.
Menggayakan apl merupakan satu lagi cabaran besar bagi saya kerana CSS telah menjadi titik lemah yang saya cenderung untuk tidak memberi tumpuan kepada menangani konsep yang lebih menakutkan dan teknikal.
Walau bagaimanapun, dengan amalan, konsep ini tidak kelihatan begitu dahsyat dan walaupun saya tahu kod saya jauh dari sempurna, saya berasa lebih yakin dengan kemahiran saya sebagai pembangun selepas menangani cabaran ini.
Kesimpulan
Projek ini bukan sahaja mengukuhkan pemahaman saya tentang JavaScript tetapi juga mengajar saya pelajaran berharga tentang ketabahan, penyelesaian masalah dan kepentingan kod modular yang bersih.
Saya harap anda seronok meneroka aplikasi itu sama seperti saya seronok membinanya. Jangan ragu untuk berkongsi maklum balas atau cadangan anda untuk penambahbaikan—saya ingin mendengar pendapat anda!
Jika anda ingin melihat kod sumber untuk projek ini, anda boleh mengaksesnya dalam repositori ini: https://github.com/CourtneyKerr19/Todays_Weather_Forecast
Terima kasih kerana membaca!
Atas ialah kandungan terperinci Membina Aplikasi Cuaca Satu Halaman dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!