Kerangka kerja yang hilang

Posting Jumat ini didedikasikan untuk menerjemahkan artikel menarik yang dirilis kemarin di Medium . Saya memutuskan untuk mempelajari genre terjemahan baru untuk diri saya sendiri, jadi tolong jangan terlalu banyak menendang jika ada yang salah di suatu tempat. Dan jika mungkin, bahkan beri tahu tentang kesalahan dan kesalahan ketik pada PM.

Terima kasih dan bacaannya bagus!


Sebuah kisah tentang bagaimana fitur-fitur baru platform web dan kerangka kerja yang dikompilasi menentukan era pengembangan web selanjutnya.



Foto: Stefan Bucher

Saat ini, kerangka kerja seperti Angular , React, dan Ember adalah kunci untuk mengembangkan aplikasi web yang kompleks. Selama dekade terakhir ( Angular dirilis pada 2010), penggunaan kerangka kerja ini telah menjadi standar de facto bagi banyak dari kita. Mereka membantu kami menyusun kode, mengelola keadaan aplikasi dan membangun antarmuka yang kompleks berdasarkan komponen yang dapat digunakan kembali.

Namun, seperti yang Anda ketahui, JavaScript adalah sumber daya web paling mahal yang secara langsung memengaruhi interaktivitas halaman kami. Dan ukuran kode JavaScript aplikasi web kita lebih besar dari sebelumnya. Halaman web rata-rata lebih besar dari 3MB, yang lebih besar dari ukuran game Doom asli. Kami, sebagai pengembang, dapat memiliki Internet yang cepat dan paket tarif yang terjangkau, tetapi pengguna kami mungkin tidak memiliki semua ini.

Menurut Alex Russell , melebihi ukuran hanya 130KB untuk semua sumber daya kami dapat berarti bahwa tidak mungkin untuk memenuhi interval unduhan 5 detik pada telepon standar dan jaringan seluler. Namun, beberapa kerangka kerja favorit kami dapat mengambil lebih banyak sendiri.

Bisakah kita menggunakan kelebihan yang diberikan kerangka kerja, tetapi pada saat yang sama menghindari kembung kode? Memiliki kenyamanan untuk pengembang dan pada saat yang sama, pengalaman pengguna yang sangat baik? Saya percaya itu. Dan saya percaya bahwa kita memasuki era baru pengembangan web, yang akan ditentukan oleh ini ... Era di mana kerangka kerja kita akan mulai menghilang.

Langsing


Contoh dari tren ini adalah Svelte , "kerangka UI yang secara ajaib menghilang" (Artikel "Kerangka UI yang menghilang secara ajaib" di Habrรฉ - kira-kira).

Svelte adalah kerangka kerja "waktu kompilasi" yang tidak memiliki runtime spesifik pada klien. Kami terbiasa mengirim paket JavaScript besar ke pengguna kami dan berharap browser mereka mem-parsing dan mengeksekusi skrip. Tapi Svelte tidak berfungsi seperti itu. Alih-alih, ia mengkompilasi aplikasi Anda menjadi modul JavaScript vanilla yang kecil, berdiri sendiri. Dengan kata lain, pada saat aplikasi dikirimkan ke pengguna Anda, Svelte akan menghilang!

Contoh aplikasi yang dikembangkan menggunakan Svelte adalah Pinafore , klien PWA Mastodon untuk jaringan sosial terdesentralisasi yang dibuat oleh Microsoft Nolan Lawson . Pinafore menunjukkan hasil yang sangat cepat dalam Uji Halaman Web dan skor 98 poin di Lighthouse .


Svelte , dalam dirinya sendiri, sangat minimalis, tetapi ada juga Sapper ( S velte App Mak er - kira-kira) - kerangka kerja fitur lengkap berdasarkan itu. Terinspirasi oleh Next.js, Sapper termasuk rendering sisi server, pemisahan kode, gaya cakupan, perutean deklaratif, dan hot-reload. Selain itu, tempper starter Sapper memberikan PWA secara default, manifes aplikasi web dan pekerja layanan dengan caching sumber daya otomatis.

Saya bertanya pada Nolan bagaimana perasaannya menggunakan Svelte dan Sapper . Dia mengatakan kepada saya bahwa itu adalah "mimpi untuk bekerja dengan" Svelte . Sapper "sedikit kurang dewasa" dan memiliki beberapa masalah dengannya, tetapi ia juga senang. Saya juga mulai menggunakan dua kerangka kerja ini untuk proyek baru, dan sejauh ini kombinasi fungsi dan kecepatan tinggi operasi benar-benar terasa sempurna.

Stensil


Svelte menginspirasi proyek alternatif dari Ionic: Stencil .



Sekali lagi, tujuannya adalah untuk mengadopsi "konsep terbaik dari kerangka kerja paling populer", tetapi pada saat yang sama mencapai kinerja yang lebih baik:

"Dengan ... kerangka kerja tradisional dan teknik bundling, tim ini berjuang untuk memenuhi permintaan latensi dan ukuran kode untuk Aplikasi Web Progresif yang berjalan sama baiknya di jaringan cepat dan lambat, melintasi beragam platform dan perangkat." - stenciljs.com

Untuk memahami apa itu Stencil , saya menemukan pengantar yang berguna dari Rob Bearman . Ada juga video dari Maximilian . Hasil Stensil adalah Komponen Web standar (lebih lanjut tentang Komponen Web di bawah), tidak khusus untuk Stensil . Ini berarti bahwa Anda dapat menggunakannya dalam kombinasi dengan kerangka kerja lain jika Anda mau (tetapi artikel ini adalah tentang bagaimana kerangka kerja menghilang, bukan berlipat ganda!).

Secara terpisah, saya ingin mencatat bahwa meskipun fakta bahwa dokumentasi Svelte tidak terlalu memperhatikan hal ini, tetapi komponen Svelte juga dapat dikompilasi langsung ke Komponen Web (di sini adalah contoh - jika Anda mengatur customElement di sini - kami mendapatkan hasilnya ). Namun, Rich Harris , pencipta Svelte (dan Rollup dan banyak hal menakjubkan lainnya!) Memberitahu saya bahwa dia tidak berpikir ada manfaat khusus untuk menggunakan fitur ini saat ini.

Stensil juga terlihat seperti Polimer Google yang lebih terkenal, tetapi menghilang sepenuhnya saat keluar. Namun, saya tidak menggunakan Polymer terlalu banyak untuk berkomentar lebih detail. Mungkin dia juga patut mendapat perhatian lebih dekat. Versi terbaru, 3 mulai menggunakan Modul ES (lebih lanjut tentang ini di bawah), bukan Impor HTML , dan npm bukannya Bower . Ada juga PWA Starter Kit yang merekomendasikan Alex Russell sebagai alat terbaik untuk membangun aplikasi web yang produktif. Ini memberi Anda pola PRPL (Push, Render, Pre-cache, Lazy-load) langsung dari kotak.

Sudut generasi selanjutnya


Terima kasih kepada Rich Harris karena memberi tahu saya bahwa Angular juga mengikuti tren ini! Angular Elements - sebuah inovasi dalam Angular 6 - memungkinkan Anda untuk mengekspor komponen Angular sebagai Komponen Web yang dapat disetel sendiri. Saat ini, masih memerlukan "versi minimum, mandiri Angular", tetapi mereka "bekerja pada elemen kustom yang dapat digunakan dalam aplikasi web yang dibangun berdasarkan kerangka kerja lain."

Selain itu, Ivy adalah renderer generasi baru di Angular, yang dirancang untuk secara drastis mengurangi ukuran kode yang dihasilkan. (Meskipun masih layak untuk dilihat: dalam semangat kompetisi persahabatan, Rich membuat perbandingan hasil kompilasi komponen web dari Svelte dan Ivy!).

Sangat keren bahwa kerangka kerja populer mengambil pendekatan ini, membuat kode akhir mereka juga lebih kompak. Kami berharap bahwa semakin banyak aplikasi web beralih ke pendekatan baru, ini akan berdampak besar pada kinerja Internet secara keseluruhan.

Selain itu, ada lebih banyak prasyarat untuk kenyataan bahwa segera kita tidak akan membutuhkan kerangka kerja sama sekali. Kerangka kerja dapat, tentu saja, menyederhanakan pengembangan dan terus memberikan add-on yang bermanfaat, tetapi platform web itu sendiri menyediakan lebih banyak fungsi daripada sebelumnya ...

Platform web sebagai kerangka kerja


Dalam artikel saya "A Rube Goldberg Machine" dan percakapan berikutnya, rekan saya Ada Rose Cannon menggambarkan bagaimana fungsi CSS dan JavaScript baru dapat "dianggap sebagai kerangka kerja yang tertanam dalam platform web".

Misalnya, Properti Kustom CSS (lebih dikenal sebagai Variabel CSS) dapat berarti bahwa Anda tidak lagi membutuhkan precompiler CSS seperti Sass . Dan CSS Grid sekarang dapat menyelamatkan Anda dari memuat Bootstrap.

โ€œAnda tidak perlu kerangka kerja untuk menggunakan CSS Grid. CSS Grid adalah sebuah kerangka kerja. "
- Rachel Andrew

Komponen web


Komponen Web sangat kuat dan merupakan kunci dari banyak tren ini. Mereka termasuk fitur-fitur berikut - Elemen Kustom, DOM Shadow dan templat HTML - belum tersedia di mana-mana , tetapi, seperti kata Ada , mereka memiliki dukungan yang cukup bagus, dan ada polyfile yang memberikan mereka dukungan yang lebih baik lagi, sehingga Anda dapat menggunakannya hari ini!

Ada dan Ruth John baru-baru ini mengembangkan aplikasi web untuk memvisualisasikan musik menggunakan komponen web dan membagikan pelajaran mereka .

Selain itu, Anda dapat merasa lebih aman dengan fitur-fitur baru seperti Komponen Web jika Anda menggunakan rendering sisi-server (SSR) dan mengimplementasikan sisi klien Anda dengan Peningkatan Progresif .

Preferensi pribadi saya adalah untuk membangun pengalaman SSR yang hebat dan kemudian meningkatkannya ke Aplikasi Halaman Tunggal.
- Ada Rose Cannon

Modul ES Isomorfik


Anda juga dapat menggunakan modul ES sekarang! Sekali lagi, dukungan browser cukup bagus, dan Anda dapat mendukung browser lama menggunakan fallback "nomodule" .

Faktanya, jika Anda setuju dengan pendekatan SSR + Progressive Enhancement, Anda bahkan dapat menggunakan modul ES tanpa harus menggunakan alat bangun untuk memindahkannya ke browser lain, karena browser lama masih dapat bekerja tanpa JavaScript. Dan menggunakan pemuat modul ESM , kita juga bisa menggunakan modul ES langsung di NodeJS .

Ini bagus karena kita dapat menggunakan kembali naskah kita di frontend dan backend (yaitu, "rendering isomorfik"), tanpa menari dengan rebana. Kami dapat menyusun kode frontend kami tanpa harus menyatukan skrip kami, meletakkan banyak tag skrip pada halaman, atau menggunakan pemuat sisi klien.

Inilah yang ditunjukkan oleh Ada dalam pembicaraan Twitch pertamanya bulan ini. Ada juga entri blog dengan penjelasan.

Saya harap saya bisa membagikan pemikiran saya ketika kita mulai memasuki era baru pengembangan web. Era yang kurang bergantung pada kerangka UI tradisional, pustaka CSS, dan bundler. Era di mana kami mengirim byte lebih sedikit dan memuat aplikasi web kami lebih cepat. Era kerangka kerja yang terancam punah.

Terima kasih kepada Nolan Lawson, Rich Harris dan Ada Rose Cannon untuk bantuan dan inspirasi mereka untuk artikel ini. Artikel ini juga diposting di sini di blog pribadi saya.

***


Dari diriku sendiri aku ingin mencatat bahwa, sayangnya, saat ini hanya aku di Habrรฉ yang menulis tentang Svelte . Oleh karena itu, dalam bahasa Rusia ada sedikit informasi tentang kerangka yang luar biasa ini.

Jika Anda bertemu dengannya untuk pertama kalinya, Anda mungkin tertarik untuk membaca artikel lain tentang topik ini:


Siapa yang ingin memantau perkembangannya secara aktif - selamat datang di saluran telegram berbahasa Rusia SvelteJS . Kami akan senang melihat Anda!

Selamat untuk semuanya di musim panas dan kemenangan tim kami! Semoga akhir pekanmu menyenangkan! Hore!

Source: https://habr.com/ru/post/id414869/


All Articles