Hologram , sebuah rangka kerja web full-stack yang membolehkan pembangun membina aplikasi web interaktif sepenuhnya dalam Elixir , telah mengeluarkan versi 0.5.0 dengan penambahbaikan prestasi yang dramatik. Rangka kerja ini mentranspil kod Elixir kepada JavaScript , membolehkan pelaksanaan bahagian klien tanpa memerlukan pembangun menulis sebarang JavaScript secara langsung.
Keluaran ini mewakili pencapaian utama dengan lebih 950 komit sejak versi sebelumnya, memfokuskan dengan berat kepada pengoptimuman prestasi dan penambahbaikan pengalaman pembangun.
Peningkatan Prestasi Besar-besaran Mengubah Pengalaman Pengguna
Penambahbaikan yang paling ketara dalam keluaran ini ialah penulisan semula lengkap pelaksanaan bitstring, memberikan peningkatan kelajuan rendering kira-kira 50x. Peningkatan prestasi ini telah mengubah pengalaman pengguna daripada interaksi yang perlahan kepada antara muka yang lancar dan responsif yang berjalan pada 60+ bingkai sesaat.
Ahli komuniti telah menyedari perbezaan dramatik itu serta-merta. Laman web rangka kerja itu sendiri, yang berfungsi sebagai demonstrasi dunia sebenar, kini menyediakan navigasi halaman yang hampir serta-merta dan interaksi menu responsif yang sebelum ini mengambil masa lebih satu saat untuk diselesaikan.
Penambahbaikan prestasi melangkaui rendering, dengan masa pelaksanaan menurun daripada milisaat kepada mikrosaat untuk banyak operasi teras bahagian klien. Ini menjadikan Hologram cukup pantas untuk mengendalikan interaksi masa nyata yang menuntut seperti penjejakan pergerakan tetikus untuk aplikasi lukisan, seperti yang ditunjukkan dalam SVG Drawing Demo yang baharu.
Penambahbaikan Prestasi
- Peningkatan kelajuan rendering sehingga ~50x daripada penulisan semula bitstring
- Masa pelaksanaan dikurangkan daripada milisaat kepada mikrosaat
- Keupayaan rendering halaman 60+ FPS
- Masa binaan tambahan yang 2x-10x lebih pantas
Pengalaman Pembangunan Mendapat Peningkatan Utama
Versi 0.5.0 memperkenalkan pengurusan sesi dan kuki yang komprehensif, membawa Hologram lebih dekat kepada pariti ciri dengan rangka kerja web tradisional. Pembangun kini boleh menggunakan fungsi yang biasa seperti put_session/3
, get_session/2
, dan fungsi pengurusan kuki dengan sokongan penuh untuk pilihan kuki standard.
Keluaran ini juga menambah fungsi muat semula langsung dengan pemantauan fail pintar dan lapisan ralat yang cantik untuk isu kompilasi. Apabila digabungkan dengan kompilasi tambahan yang memberikan masa binaan 2x hingga 10x lebih pantas, pengalaman pembangunan menjadi jauh lebih menyenangkan dan produktif.
Sokongan acara baharu termasuk acara penunjuk dan acara pergerakan tetikus dengan penjejakan koordinat yang komprehensif, membolehkan interaksi pengguna yang lebih canggih yang sebelum ini sukar untuk dilaksanakan dengan lancar.
Ciri Baharu dalam v0.5.0
- Sistem pengurusan sesi lengkap dengan
put_session/3
,get_session/2
,get_session/3
,delete_session/2
- Sokongan cookie penuh dengan
put_cookie/3
,put_cookie/4
,get_cookie/2
,get_cookie/3
,delete_cookie/2
- Acara baharu:
pointer_move
,pointer_cancel
,pointer_down
,pointer_up
,mouse_move
,select
- Muat semula langsung dengan pemantauan fail dan lapisan ralat
- Pelaksanaan CRDT ( Last Writer Wins Map ) untuk keadaan teragih
Seni Bina Beralih Ke Arah Komunikasi Berasaskan HTTP
Perubahan seni bina yang ketara melibatkan migrasi daripada WebSocket kepada komunikasi berasaskan HTTP untuk operasi yang perlu mengakses kuki dan data sesi. Perubahan ini termasuk sistem ping HTTP baharu yang mengekalkan kesihatan sambungan sambil menyediakan latensi yang hampir sama seperti sambungan WebSocket .
Rangka kerja kini menggunakan pelaksanaan WebSocket tersuai dan bukannya bergantung kepada Phoenix Channels , memberikan pembangun lebih kawalan ke atas pengurusan sambungan dan mengurangkan pergantungan luaran.
Perubahan Seni Bina
- Migrasi daripada WebSocket kepada HTTP untuk operasi kuki/sesi
- Sistem ping HTTP dengan selang masa 30 saat
- Pelaksanaan WebSocket tersuai (menghapuskan kebergantungan Phoenix Channels )
- Format pensirialan v2 dengan keserasian ke belakang
Penggunaan Komuniti dan Kebimbangan Prestasi
Walaupun penambahbaikan prestasi telah menarik perhatian pengguna awal, sesetengah ahli komuniti telah membangkitkan kebimbangan tentang saiz bundle dan masa muat halaman awal. Ujian Google PageSpeed Insights mendedahkan bundle runtime 104 KiB dengan skor Largest Contentful Paint 1.5 saat, yang sesetengahnya menganggap berlebihan untuk laman web dokumentasi.
Walau bagaimanapun, pencipta rangka kerja mengakui kebimbangan ini dan menekankan bahawa pengoptimuman bundle belum menjadi keutamaan lagi. Versi masa depan dijangka mengurangkan saiz bundle dengan ketara melalui teknik pengoptimuman yang betul.
Analisis Saiz Bundle
- Bundle runtime semasa: 104 KiB saiz pemindahan
- Google PageSpeed Insights LCP: 1.5 saat
- Pengoptimuman bundle belum dilaksanakan
- Dijangka pengurangan saiz yang ketara dalam versi akan datang
Kedudukan Terhadap Phoenix LiveView
Hologram meletakkan dirinya sebagai alternatif kepada Phoenix LiveView untuk senario yang memerlukan interaksi bahagian klien yang segera. Sementara LiveView merender kemas kini UI di pelayan dan menghantarnya kepada klien, Hologram mentranspil kod UI Elixir kepada JavaScript yang berjalan sepenuhnya dalam pelayar.
Pendekatan ini menghapuskan perjalanan pulang pelayan untuk interaksi UI, menjadikannya ideal untuk aplikasi yang memerlukan keupayaan luar talian, mengurangkan beban pelayan, atau antara muka pengguna yang benar-benar responsif. Rangka kerja boleh wujud bersama dalam aplikasi Phoenix yang sama, membolehkan pembangun memilih pendekatan terbaik untuk ciri yang berbeza.
Keluaran ini menunjukkan komitmen Hologram untuk membawa model pengaturcaraan berkuasa Elixir kepada pembangunan bahagian klien sambil mengekalkan kelebihan penggunaan segera dan kebolehcapaian universal aplikasi web. Dengan sokongan CRDT asas yang disertakan untuk ciri teragih masa depan, versi 0.5.0 mewujudkan asas yang kukuh untuk evolusi berterusan rangka kerja.
Rujukan: Hologram v0.5.0 Released!