Bicara tentang Elm .
Elm adalah bahasa pemrograman fungsional untuk pengembangan frontend. Sintaksnya mirip dengan Haskell, tetapi secara signifikan disederhanakan dan terspesialisasi. Kode sumber Elm mengkompilasi ke dalam JavaScript asli. JavaScript yang dikompilasi berisi kode aplikasi yang mengontrol subtree DOM.
Elm Nyaman dan canggung. Komposisi
Elm Nyaman dan canggung. Json.Encoder dan Json.Decoder
Elm Nyaman dan canggung. Http, Tugas
Elemen utama dalam arsitektur bahasa Elm adalah aplikasinya. Secara umum, setiap aplikasi berisi:
- Negara atau model. Data yang menggambarkan keadaan aplikasi saat ini;
- Banyak pesan yang valid. Pesan dikirim ketika peristiwa terjadi (misalkan tombol diklik) dan dikirim ke fungsi pembaruan;
- Fungsi tampilan yang, berdasarkan pada negara, menghasilkan pohon DOM baru;
- Fungsi pembaruan, yang mengambil model dan pesan, dan mengembalikan model baru dan efek yang diperlukan;
- Fungsi berlangganan, berlangganan pemberitahuan acara. Pada intinya bahasa ada langganan pengatur waktu, WebSocket, dan lainnya.
Mengetik
Semuanya harus diketik. Akibatnya, pengecekan konsistensi kode statis. Jika dikompilasi, itu akan berhasil. Tapi itu akan berfungsi seperti yang Anda harapkan atau tidak - tidak ada jaminan. Ini sangat menyederhanakan refactoring.
Model
Model adalah tipe khusus. Jenis khusus dibuat dari:
- Ketik Alias untuk menggambarkan struktur;
- Jenis Serikat untuk menggambarkan asosiasi jenis yang valid;
- tipe dasar Int, String dan lainnya.
Jenis Serikat memungkinkan Anda untuk mendeklarasikan jenis yang ditandai. Misalnya, ambil deskripsi tipe Pengguna:
type User = Anonymous | User String
Tipe yang dideklarasikan berisi informasi tentang tipe pengguna dan datanya, jika ia berwenang. Kalau tidak, pengguna itu anonim.
Perbatasan
Perbatasan antara runtime Elm dan lingkungan eksternal melalui decoder. Decoder (Json.Decode) adalah fungsi yang menerima JSON dan mengembalikan tipe Elm. Selama eksekusi Json.Decode.decodeString atau Json.Decode.decodeValue , struktur data input dan korespondensi dengan jenis diperiksa.
Dekoder mengembalikan tipe Hasil yang berisi data, jika berhasil, atau kesalahan.
Lihat
Tampilan adalah fungsi status yang mengembalikan informasi untuk membuat pohon DOM. Contoh:
view : Model -> Html.Html Msg view model = case model.user of Anonymous -> Html.div [] [ Html.text “Anonymous” ] User name -> Html.div [] [ Html.text (“Welcome ” ++ name) ]
Fungsi digunakan untuk menghasilkan node DOM. Dalam proyek pertempuran, pandangan adalah komposisi fungsi dari tatanan yang lebih umum. Sebagai contoh:
view : Model -> Html.Html Msg view model = case model.user of Anonymous -> anonymousView User name -> userView name
anonymousView dan userView adalah fungsi pengguna yang menghasilkan bagian kecil dari antarmuka.
Mutasi (perbarui)
Semua peristiwa (aksi pengguna, jaringan, dll.) Menghasilkan pesan yang dikirim ke fungsi yang terdaftar selama inisialisasi. Secara default, fungsi ini bernama pembaruan. Fungsi ini mengambil peristiwa dan model, dan mengembalikan model dan perintah baru. Perintah dijalankan di Elm runtime dan juga dapat menghasilkan peristiwa.
Misalnya, menambah variabel saat tombol ditekan:
update : Model -> Msg -> (Model, Cmd Msg) update model msg = case msg of OnClick -> ({model | clicked = model.clicked + 1}, Cmd.none)
Berlangganan
Berlangganan acara terjadi saat startup aplikasi dan dipanggil kembali setiap kali model diubah.
Jika suatu peristiwa terjadi, mereka dikirim ke fungsi pembaruan.
Misalnya, berlangganan timer dengan periode 10 detik. Ketika mencapai 10 detik, pesan Tick dihasilkan dan dikirim ke fungsi pembaruan:
subscribe : Model -> Sub Msg subscribe model = Time.every 10 Tick
Sumber