Jamstack: Membina seni bina moden untuk laman web yang lebih cepat, selamat dan berskala
gambar yang disediakan oleh: netlify
Pada tahun -tahun kebelakangan ini, teknologi pembangunan web telah berubah dengan setiap hari berlalu. Artikel ini akan memperkenalkan seni bina Jamstack dan menjelaskan konsep dan kelebihannya.Pada masa lalu, seni bina lampu menguasai perkembangan laman web dinamik. Seterusnya, arsitektur min meletakkan asas bagi generasi baru aplikasi web. Hari ini, dengan kebangkitan API dan komponen yang boleh diguna semula, laman web statik telah menjadi trend lagi. Ini adalah cara untuk "kembali ke asas", tetapi tidak betul -betul.
Poin teras:
Jamstack adalah seni bina yang mentakrifkan semula web moden untuk membina laman web yang lebih cepat dan lebih selamat. Laman -laman ini lebih berskala dan lebih mudah (lebih menyeronokkan) untuk membangun dan mengekalkan dengan set alat yang betul.
mari kita memecahkan istilah ini:
J bermaksud JavaScript.
"Laman Web Statik" adalah bertentangan dengan "Laman Web Dinamik", bukan? Jadi, bagaimanakah kita dapat menyediakan interaksi yang kaya dan dinamik menggunakan fail HTML yang mudah? Jawapannya ialah JavaScript.
JavaScript telah banyak berubah sejak perang penyemak imbas pertama, dan dengan kemunculan node.js dan kemunculan perpustakaan seperti React, Angular dan Vue.js, ia telah menyatukan dirinya sebagai status bahasa pengaturcaraan sejagat. Kemungkinan merancang antara muka pengguna lanjutan (UIS) tidak berkesudahan.Sudah tentu, JavaScript bukanlah Panacea. Anda kemungkinan besar tidak akan menggunakannya untuk analisis data atau AI. Tetapi untuk pembangunan web tidak ada kaitan dengan API yang tidak dapat anda lakukan dengan kaedah JavaScript, kerana kemungkinan besar seseorang telah mencipta microservice untuk ini.
Dan jika anda dapat merangkum semua proses dan markup ini ke dalam komponen yang boleh diguna semula -anda boleh memasangkan pada bila -bila masa apabila anda memerlukan ciri tertentu -maka anda boleh menjimatkan jam kerja setiap kali.
Ini adalah stack J · a · m: JavaScript, API, tag.
gandingan dan decoupling dan tanpa kepala
merujuk kepada kandungan laman web yang dibuat, diuruskan, dan disimpan di belakang laman web (di mana pangkalan data terletak, seperti Panel Admin WordPress). Kandungan ini kemudian diekstrak dari backend dan diwakili dalam penyemak imbas melalui antara muka depan (seperti templat WordPress). Untuk beberapa tahap, aplikasi "digabungkan" secara tradisinya "stack penuh", dan backend dan frontend adalah aspek yang berbeza dari aplikasi yang sama. Sebaliknya, decoupling bermaksud bahawa backend dan frontend diuruskan secara berasingan - ini bermakna bahawa pangkalan data dan alat pengurusan akan ditempatkan di satu pelayan, sementara frontend akan ditempatkan di pelayan lain . Sudah tentu, medium diperlukan untuk menyambung kedua -duanya, biasanya API. Selain itu, sejak backend kini sebenarnya terpisah dari frontend, mungkin terdapat beberapa frontends di lokasi yang berbeza! (Fikirkan tentang kedai depan yang berbeza menggunakan enjin yang sama, seperti Shopify.)
Secara ringkasnya, perisian tidak mempunyai lapisan depan atau pembentangan sama sekali. Sebagai contoh, CMS tanpa kepala boleh menjana kandungan statik dan menolaknya di mana sahaja: aplikasi mudah alih, peranti IoT, laman web statik. Diakui, ini juga merupakan keadaan "decoupling", tetapi di sini anda mungkin tidak memerlukan API. Fikirkan enjin WordPress yang mengeksport jawatan sebagai fail HTML statik untuk perkhidmatan: Ini tidak kepala. Malah, anda kini berada di halaman yang dihasilkan dengan cara ini. hanya meletakkan, monotype boleh ditakrifkan sebagai perisian yang dibina secara keseluruhan. Contohnya termasuk aplikasi mudah alih, kebanyakan aplikasi yang boleh dipasang pada komputer anda, dan aplikasi web seperti WordPress. Aplikasi ini masih boleh mempunyai "modul" dalaman atau "komponen", tetapi kami mengatakan ini digabungkan dengan ketat kerana mereka adalah bahagian penting aplikasi, tanpa mereka, aplikasi itu tidak akan berfungsi.
Sebaliknya, komponen perisian yang dilengkapi dengan longgar berfungsi lebih seperti plugin yang boleh dikeluarkan atau diganti, dan fungsi mungkin berubah, tetapi teras aplikasi masih boleh berfungsi. Prinsip ini membolehkan fungsi "penyumberan luar" melalui API pihak ketiga (biasanya dirujuk sebagai "microservices") - kerana mereka menyediakan ciri -ciri kebolehaksesan (saiz semula imej, log masuk, penyimpanan) yang tidak semestinya penting untuk aplikasi.
sahih, "tanpa pelayan" adalah sedikit salah faham. Tidak kira apa jenis kerja pengkomputeran yang anda lakukan, pelayan akan terlibat. Walau bagaimanapun, cara anda mengakses dan menguruskan pelayan anda mungkin sangat berbeza.
Dalam model tradisional , anda mungkin mempunyai pelayan fizikal sebenar (kadang -kadang dipanggil logam telanjang), atau pelayan peribadi maya di mana sumber diperuntukkan kepada anda -dan pengguna lain -dalam pelayan fizikal. Sumber adalah terhad, dan sama ada anda menggunakan 100% sumber atau tidak, anda perlu membayarnya seolah -olah anda menggunakannya.
Model tradisional Model Serverless
pelayan fizikal dengan sumber terhad
Jika statik adalah pilihan terbaik, maka apa yang lebih baik daripada menukar blog WordPress (WP) yang dinamik ke blog statik? Dengan berbuat demikian, kami akan mengurangkan kelajuan pemuatan halaman dan latensi dengan sekurang -kurangnya urutan magnitud, meningkatkan keselamatan, dan meningkatkan SEO kami pada masa yang sama.
Singkatnya, prosesnya adalah seperti berikut:
Apa yang harus saya lakukan dengan panel pengurusan?
Kami tidak dapat menutup selok-belok SSG dan CMS tanpa kepala di sini, tetapi sila perhatikan susulan siri ini. Kami akan menyediakan panduan langkah demi langkah untuk memindahkan laman web WordPress.
anda masih perlu memberitahu kami nombor kad kredit anda Dalam kes ini, kami akan mengambil laman web statik kami (mis., Blog yang kami berhijrah dalam Kajian Kes 1) dan meletakkannya dalam talian:
Syarikat juga akan mengunci anda dengan memberikan banyak percuma. Apabila anda memerlukan perkhidmatan lanjutan (anda memerlukannya jika perniagaan anda berkembang), anda sudah bekerja dengan mereka. Ia adil - dan, pada masa itu, anda perlu membangunkan penyelesaian sementara untuk menyelesaikan masalah anda atau menggunakan perkhidmatan untuk masa berbayar. Netlify atau GitHub/Gitlab adalah sangat mudah dan memerlukan usaha yang minimum. (Walau bagaimanapun, kita akan masuk ke dalam proses secara terperinci dalam artikel berikut.) mari kita lihat bagaimana pendekatan baru ini dibandingkan dengan lampu atau tumpuan bermakna:
monobody (digabungkan dengan ketat) dan microservices (longgar digabungkan)
Dalam model tanpa pelayan
, banyak pelayan disambungkan antara satu sama lain, menyediakan sumber yang besar. Anda hanya mengeluarkan sumber yang diperlukan apabila diperlukan dan skala mereka seperti yang diperlukan (naik dan turun). Anda tidak boleh memastikan bahawa mana -mana pelayan fizikal adalah milik anda - anda hanya tahu di mana sumbernya datang. Kolam Sumber Tanpa Had lebih banyak seni bina yang boleh dipercayai*
terdedah kepada kegagalan (seperti kegagalan cakera keras)
Skalabiliti terhad
Skalabiliti Tanpa Had
Bayar semua yuran, termasuk perkhidmatan terbiar
membayar penggunaan (bayar atas permintaan)
mudah dan mudah digunakan
perlu belajar dan melaksanakan
** Sila ambil perhatian bahawa cakera keras, CPU dan kegagalan cip memori masih akan berlaku. Tetapi kerana sumber -sumber diperuntukkan secara telus, anda tidak akan melihat walaupun perkakasan gagal dan digantikan.
Contoh praktikal jamStack
Terdapat banyak perkara, terutamanya jika anda tidak biasa dengan konsep -konsep ini. Oleh itu, mari kita berehat dari teori dan lihat beberapa aplikasi praktikal Jamstack dalam kehidupan sebenar.
Kajian Kes 1: Tukar WordPress ke laman web statik dengan kelajuan 10x
Buat artikel dan halaman dari WP menggunakan penjana tapak statik (SSG), tetapi dalam format statik (teks, markdown, html).
Kandungan statik Synch dengan repositori pada GitHub, Gitlab, atau Bitbucket.
Sudah tentu, ini menimbulkan banyak masalah:
Apa yang perlu dilakukan dengan kategori dan suapan RSS?
Menguruskan kandungan (seperti mengubah suai jawatan sedia ada) adalah di mana CMS tanpa kepala dimainkan. Untuk komen dan surat berita, adakah anda sudah menggunakan API luaran (seperti disqus dan mailchimp)?
Dalam komuniti Jamstack, anda akan sering mendengar "percuma" - bersyukur, ia tidak percuma, kerana
Singkatnya, prosesnya adalah seperti berikut:
Deploy untuk Netlify, Gitlab Pages, atau GitHub Pages. Pada ketika ini, setiap perubahan ke repositori secara automatik akan mencetuskan penempatan baru (melalui webhook) dan boleh dilancarkan kembali dengan sangat anggun jika ada yang salah.
bagaimana anda sebenarnya melakukannya?
Perbandingan antara Jamstack dan Pembangunan Stack Penuh
LAMP/MEAN Stack Jamstack
pelayan web menjalankan laman web
penyebaran global ke CDN
muat naik ftp/ssh, mulakan pelayan
Line Assembly Automation
Running Page
Prerender halaman untuk meningkatkan kelajuan
Aplikasi monobody (seperti WordPress)
API dan microservices (decoupling front-end/back-end)
stack penuh (bahasa depan dan backend)
stack berteknologi tunggal ("JavaScript di mana -mana")
Berikut adalah beberapa contoh lain yang boleh anda lakukan dengan jamStack:
Pembelajaran cara -cara baru untuk melakukan sesuatu mungkin terdengar rumit, tetapi ia juga dapat menghidupkan semula semangat anda untuk pembangunan. Anda mungkin mendapati diri anda menghabiskan lebih sedikit masa mengekalkan pelayan dan bimbang tentang isu keselamatan. Anda mungkin mendapati bahawa pembangunan memerlukan kurang usaha dan pelanggan anda lebih berpuas hati. Anda mungkin lebih kompetitif (dan dapat meminta kenaikan) kerana ini. ?
Asas Jamstack
dan lebih banyak kerja yang berterusan.
Apa itu Jamstack? Jamstack bermaksud "JavaScript, API, dan Tags". Ini adalah seni bina untuk membina laman web dan aplikasi web, yang menekankan decoupling front-end dari back-end untuk prestasi yang lebih baik, keselamatan, dan pengalaman pemaju.
Bagaimana Jamesstack berbeza daripada pembangunan web tradisional? Dalam pembangunan web tradisional, pelayan bertanggungjawab untuk menghasilkan HTML secara dinamik dalam setiap permintaan. Sebaliknya, Jamstack pra-membina halaman semasa proses membina, secara langsung menyediakan aset statik kepada pelanggan, dan menggunakan API untuk melaksanakan fungsi dinamik.
Apakah prinsip utama seni bina jamStack? Prinsip-prinsip utama Jamstack termasuk pembangunan pra-penanaman, pembangunan API-centric, dan penggunaan rangkaian penyampaian kandungan global (CDN). Pre-rendering melibatkan menjana HTML statik semasa fasa binaan, manakala API mengendalikan fungsi dinamik.
Apakah faedah menggunakan Jamstack? Jamstack menyediakan banyak faedah seperti prestasi yang lebih baik kerana penjanaan tapak statik, meningkatkan keselamatan dengan mengurangkan permukaan serangan pelayan, dan berskala mudah dengan CDN. Di samping itu, ia sering membawa kepada pengalaman pemaju yang lebih baik.
Bolehkah saya menggunakan fungsi pelayan dalam aplikasi jamStack saya? Ya, aplikasi Jamstack dapat memanfaatkan fungsi pelayan-pelayan melalui fungsi tanpa pelayan atau API. Fungsi tanpa pelayan membolehkan anda melaksanakan kod pelayan sebagai tindak balas kepada peristiwa, menyediakan fungsi dinamik sambil mengekalkan manfaat penghantaran tapak statik.
Adakah Jamstack sesuai untuk semua jenis laman web? Jamstack sesuai untuk pelbagai laman web, dari laman blog dan pemasaran mudah ke aplikasi web yang kompleks. Walau bagaimanapun, kebolehgunaannya bergantung kepada keperluan khusus projek dan keperluan untuk pemprosesan sisi pelayan masa nyata.
Atas ialah kandungan terperinci Pengenalan kepada Jamstack: Membina laman web yang selamat, berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!