Bina platform blog moden dan cekap: gabungan sempurna Vue.js dan Graphcms
mata teras:
Jika anda ingin memulakan blog hari ini dengan cepat, saya cadangkan anda menggunakan WordPress secara langsung.
Tetapi bagaimana jika anda seorang gergasi media dan ingin menyampaikan kandungan anda ke pelbagai peranti secepat mungkin? Anda juga mungkin perlu mengintegrasikan kandungan anda dengan pengiklanan dan perkhidmatan pihak ketiga yang lain. Anda boleh melakukan ini dengan WordPress, tetapi anda akan menghadapi beberapa masalah dengan platform ini.
Anda perlu memasang plugin untuk melaksanakan fungsi tambahan. Semakin banyak plugin yang anda pasang, semakin perlahan laman web anda.
Ingin belajar vue.js dari awal? Artikel ini dikutip dari Perpustakaan Lanjutan kami. Sertai SitePoint Premium sekarang untuk mendapatkan koleksi lengkap buku Vue yang meliputi asas, projek, tip, dan alat untuk hanya $ 9 sebulan.
Jadi bilangan penyelesaian CMS tanpa kepala (yang hanya backend yang digunakan untuk menguruskan kandungan) telah berkembang. Dengan pendekatan ini, pemaju boleh memberi tumpuan kepada membina front-ends cepat dan interaktif menggunakan kerangka JavaScript yang mereka pilih. Menyesuaikan front-end berasaskan JavaScript jauh lebih mudah daripada menukar laman web WordPress.
Perbezaan antara GraphCMS dan platform CMS yang paling tidak kepala adalah bahawa ia berfungsi kandungan dan bukannya berehat, tetapi melalui GraphQL. Teknologi baru ini lebih baik daripada berehat kerana ia membolehkan kita membina pertanyaan yang melibatkan data kepunyaan pelbagai model dalam satu permintaan.
Pertimbangkan corak model berikut:
artikel
Komen
Model di atas mempunyai satu-ke-banyak (artikel untuk mengulas). Mari lihat bagaimana untuk mendapatkan rekod artikel tunggal dengan semua rekod komen pautan yang dilampirkan.
Jika data berada dalam pangkalan data relasi, anda mesti membina pernyataan SQL yang tidak cekap, atau membina dua pernyataan SQL untuk mendapatkan data dengan bersih. Jika data disimpan dalam pangkalan data NoSQL, anda boleh mendapatkan data untuk anda menggunakan ORM moden seperti Vuex Orm, seperti yang ditunjukkan di bawah:
const post = Post.query() .with('comments') .find(1);
sangat mudah! Anda boleh dengan mudah lulus data ini ke klien sasaran melalui rehat. Tetapi masalahnya ialah: Apabila keperluan data pelanggan berubah, anda akan dipaksa untuk kembali ke kod backend anda untuk mengemas kini titik akhir API anda yang sedia ada, atau membuat titik akhir baru yang menyediakan dataset yang diperlukan. Proses bolak -balik ini adalah susah payah dan berulang -ulang.
Jika di peringkat pelanggan, anda hanya boleh meminta data yang anda perlukan tanpa anda melakukan kerja tambahan, backend akan memberikan anda data? Nah, itulah yang dimaksudkan oleh GraphQL.
Sebelum kita memulakan, saya ingin menunjukkan bahawa panduan ini adalah untuk pertengahan kepada pengguna lanjutan. Saya tidak akan menerangkan asas -asas, tetapi sebaliknya menunjukkan kepada anda bagaimana untuk membina blog Vue.js dengan cepat menggunakan GraphCMS sebagai backend. Anda perlu mahir dalam bidang berikut:
Ini adalah semua yang anda perlu tahu untuk memulakan tutorial ini. Juga, pengetahuan latar belakang menggunakan REST akan sangat berguna kerana saya akan sering memetiknya. Jika anda ingin menyemaknya, siaran ini mungkin membantu: "Rest 2.0 ada di sini, namanya adalah Graphql".
Kami akan membina aplikasi blog yang sangat mudah dengan sistem komen asas. Berikut adalah pautan yang boleh diakses untuk melihat projek yang lengkap:
Perhatikan bahawa token baca sahaja digunakan dalam demo, jadi sistem komen tidak akan berfungsi. Anda perlu memberikan kebenaran terbuka dan titik akhir seperti yang diterangkan dalam tutorial ini untuk menjadikannya berfungsi.
pergi ke laman web GraphCMS dan klik butang "Mula Bina untuk Percuma". Anda akan dibawa ke halaman pendaftaran mereka.
Dalam contoh di atas, saya telah membuat projek yang dipanggil "Blogdb". Teruskan membuat projek baru dan namakannya seperti yang anda suka. Selepas memasukkan nama, anda boleh meninggalkan medan yang tinggal sebagai nilai lalai. Klik untuk membuat dan anda akan memasukkan pelan projek mereka.
untuk meneruskan . Anda akan memasuki papan pemuka projek seperti yang ditunjukkan di bawah:
pergi ke
tab. Kami akan membuat model berikut, masing -masing dengan bidang berikut: kategori
Nama: Teks Talian Single, Diperlukan, Unik
slug: teks satu baris, diperlukan, unik
Nama: Teks baris tunggal, diperlukan
. Di sebelah kanan, anda harus mencari panel tersembunyi untuk medan yang boleh diaktifkan dengan mengklik butang . Seret dan lepaskan jenis medan yang sesuai ke panel model. Anda akan melihat borang untuk mengisi sifat -sifat medan. Ambil perhatian bahawa terdapat butang merah jambu di bahagian bawah yang ditandakan Advanced . Mengklik ia akan memperluaskan panel, memberikan anda lebih banyak sifat medan yang boleh diaktifkan.
Seterusnya, anda perlu menambah hubungan antara model seperti berikut:
artikel & gt;
artikel & gt;
Anda kini telah menyelesaikan bahagian pertama. Sekarang mari kita berikan beberapa data untuk model kami.
Untuk menambah kandungan ke model, anda hanya boleh mengklik tab
di papan pemuka projek di mana anda boleh membuat rekod baru untuk setiap model. Walau bagaimanapun, jika anda mendapati ini menjadi pendekatan yang perlahan, anda akan gembira mengetahui bahawa saya telah membuat alat penghijrahan GraphCMS yang boleh menyalin data dari fail CSV dan memuat naiknya ke pangkalan data GraphCMS anda. Anda boleh mencari projek dalam repositori GitHub ini. Untuk memulakan projek ini, muat turunnya ke ruang kerja anda seperti berikut:
const post = Post.query() .with('comments') .find(1);
Seterusnya, anda perlu mendapatkan titik akhir dan token API untuk projek GraphCMS anda dari halaman tetapan papan pemuka. Anda perlu membuat token baru. Untuk tahap kebenaran, gunakan Open kerana ini akan membolehkan alat untuk melakukan operasi membaca dan menulis pada pangkalan data GraphCMS anda. Buat fail bernama .env dan letakkan di direktori akar projek:
git clone git@github.com:sitepoint-editors/graphcsms-data-migration.git cd graphcsms-data-migration npm install
Seterusnya, anda mungkin perlu mengisi fail CSV dalam folder data dengan data anda sendiri. Berikut adalah beberapa data sampel yang telah digunakan:
<code>ENDPOINT=<你的API端点> TOKEN=<你的OPEN权限令牌></code>
anda boleh menukar kandungan yang diperlukan. Pastikan tidak menyentuh baris atas atau anda akan menukar nama medan. Perhatikan bahawa untuk lajur kategori saya telah menggunakan saluran paip |
Untuk memuat naik data CSV ke pangkalan data GraphCMS anda, laksanakan perintah berikut dalam urutan berikut:
<code>// Categories.csv name Featured Food Fashion Beauty // Posts.csv title,slug,content,categories Food Post 1,food-post-1,Breeze through Thanksgiving by making this Instant Pot orange cranberry sauce,Food|Featured Food Post 2,food-post-2,This is my second food post,Food Food Post 3,food-post-3,This is my last and final food post,Food Fashion Post 1,fashion-post-1,This is truly my very first fashion post,Fashion|Featured Fashion Post 2,fashion-post-2,This is my second fashion post,Fashion Fashion Post 3,fashion-post-3,This is my last and final fashion post,Fashion Beauty Post 1,Beauty-post-1,This is truly my very first Beauty post,Beauty|Featured Beauty Post 2,Beauty-post-2,This is my second beauty post,Beauty</code>
Setiap skrip akan mencetak rekod yang dimuat naik dengan berjaya. Sebabnya kami memuat naik kategori terlebih dahulu adalah untuk membolehkan rekod artikel berjaya dikaitkan dengan rekod kategori sedia ada.
Jika anda ingin membersihkan pangkalan data anda, anda boleh menjalankan arahan berikut:
npm run categories npm run posts
Skrip ini akan memadamkan kandungan semua model. Anda akan menerima laporan yang menunjukkan berapa banyak rekod setiap model telah dipadam.
Saya harap anda dapati alat ini sangat mudah. Kembali ke papan pemuka untuk mengesahkan bilangan artikel dan kategori
Data telah dimuat naik dengan jayanya.
Backend diproses, mari kita mula membina antara muka blog depan kami.
Seperti yang dinyatakan sebelum ini, kami akan membina aplikasi blog yang sangat mudah yang disokong oleh backend pangkalan data GraphCMS. Mulakan terminal dan navigasi ke ruang kerja anda.
Jika anda belum memasang Vue CLI, pasangkannya sekarang:
npm run reset
kemudian buat projek baru:
npm install -g @vue/cli
Pilih fungsi pemilihan manual dan pilih pilihan berikut:
Selepas proses penciptaan projek selesai, tukar ke direktori projek dan pasangkan kebergantungan berikut:
vue create vue-graphcms
Untuk menubuhkan bootstrap-vue dalam projek kami, hanya buka src/main.js dan tambahkan kod berikut:
npm install bootstrap-vue axios
Seterusnya, kita perlu mula membina struktur projek. Dalam folder Src/Components, padamkan fail sedia ada dan buat fail baru ini:
Dalam folder Src/Views, padamkan kira -kira.Vue dan buat fail baru bernama Postview.vue. Seperti yang anda lihat dari demo, kami akan mempunyai beberapa halaman kategori, masing -masing menunjukkan senarai artikel yang ditapis mengikut kategori. Secara teknikal, hanya satu halaman yang akan memaparkan senarai artikel yang berbeza berdasarkan nama laluan aktif. Komponen postlist akan menapis artikel berdasarkan laluan semasa.
mari kita sediakan laluan terlebih dahulu. Buka src/router.js dan ganti kod sedia ada dengan kod ini:
const post = Post.query() .with('comments') .find(1);
Sekarang kita mempunyai laluan, mari kita sediakan menu navigasi. Buka src/app.vue dan ganti kod sedia ada dengan kod ini:
git clone git@github.com:sitepoint-editors/graphcsms-data-migration.git cd graphcsms-data-migration npm install
Ini akan menambah bar navigasi di bahagian atas laman web kami dengan pautan ke kategori kami yang berbeza.
simpan fail dan kemas kini fail berikut dengan sewajarnya:
src/views/home.vue
<code>ENDPOINT=<你的API端点> TOKEN=<你的OPEN权限令牌></code>
src/komponen/postlist.vue
<code>// Categories.csv name Featured Food Fashion Beauty // Posts.csv title,slug,content,categories Food Post 1,food-post-1,Breeze through Thanksgiving by making this Instant Pot orange cranberry sauce,Food|Featured Food Post 2,food-post-2,This is my second food post,Food Food Post 3,food-post-3,This is my last and final food post,Food Fashion Post 1,fashion-post-1,This is truly my very first fashion post,Fashion|Featured Fashion Post 2,fashion-post-2,This is my second fashion post,Fashion Fashion Post 3,fashion-post-3,This is my last and final fashion post,Fashion Beauty Post 1,Beauty-post-1,This is truly my very first Beauty post,Beauty|Featured Beauty Post 2,Beauty-post-2,This is my second beauty post,Beauty</code>
Perhatikan bahawa dalam komponen postlist, kami menggunakan pemerhati tersuai untuk mengemas kini atribut data kategori kami berdasarkan URL semasa.
kita kini boleh melakukan ujian cepat untuk mengesahkan bahawa penghalaan berfungsi dengan betul. Gunakan perintah NPM Run berkhidmat untuk memulakan pelayan Vue.js. Buka penyemak imbas di Localhost: 8080 dan uji setiap pautan navigasi. Harta kategori harus mengeluarkan nilai yang sama yang kami tentukan dalam harta nama laluan.
npm run categories npm run posts
npm run reset
Play . Anda harus melihat hasil di panel baru di sebelah kanan.
ini adalah contoh pertanyaan:
Ini adalah contoh variasi:
tunjukkan data dalam templat
const post = Post.query() .with('comments') .find(1);
mari kita lihat dengan cepat fungsi utama kod:
Setelah membuat perubahan ini, kini anda harus melihat pandangan berikut:
git clone git@github.com:sitepoint-editors/graphcsms-data-migration.git cd graphcsms-data-migration npm install
Komponen Pos adalah komponen induk komponen CommentForm dan CommentList. Data komen akan diluluskan sebagai alat peraga dari rekod artikel ke komponen CommentList. Sekarang mari kita masukkan kod src/komponen/commentlist.vue:
<code>ENDPOINT=<你的API端点> TOKEN=<你的OPEN权限令牌></code>
<code>// Categories.csv name Featured Food Fashion Beauty // Posts.csv title,slug,content,categories Food Post 1,food-post-1,Breeze through Thanksgiving by making this Instant Pot orange cranberry sauce,Food|Featured Food Post 2,food-post-2,This is my second food post,Food Food Post 3,food-post-3,This is my last and final food post,Food Fashion Post 1,fashion-post-1,This is truly my very first fashion post,Fashion|Featured Fashion Post 2,fashion-post-2,This is my second fashion post,Fashion Fashion Post 3,fashion-post-3,This is my last and final fashion post,Fashion Beauty Post 1,Beauty-post-1,This is truly my very first Beauty post,Beauty|Featured Beauty Post 2,Beauty-post-2,This is my second beauty post,Beauty</code>
sekarang mari kita bina komponen src/komponen/post.vue:
npm run categories npm run posts
npm run reset
Dalam contoh di atas, saya telah menambah beberapa komen untuk menguji ciri -ciri baru. Pastikan anda melakukan perkara yang sama.
Ringkasan
Untuk tujuan tutorial ini, saya perlu menyimpannya semudah mungkin. Anda mungkin mendapati bahawa projek blog ini jauh dari mencapai persediaan blog yang paling mudah. Kami tidak menyelesaikan banyak isu seperti pengendalian ralat, pengesahan bentuk, dan caching. Untuk bahagian terakhir, saya mengesyorkan pelanggan Apollo kerana ia mempunyai mekanisme untuk cache hasil pertanyaan GraphQL. Sudah tentu, model pengarang dan sistem komen yang sesuai yang menyokong kelulusan pengesahan dan mesej diperlukan.
Jika anda lebih suka, sila terus memperbaiki blog Vue.js Graphcms mudah ini.
Menggunakan CMS tanpa kepala dan Vue.js mempunyai banyak kelebihan. Pertama, ia menyediakan sistem pengurusan kandungan yang lebih fleksibel dan cekap. Ia memisahkan backend dan frontend, yang membolehkan pemaju mengendalikan kedua -dua hujungnya secara bebas. Pemisahan ini juga bermakna CMS boleh memberikan kandungan kepada mana -mana platform, bukan hanya laman web. Kedua, Vue.js adalah rangka kerja JavaScript yang progresif yang mudah difahami dan diintegrasikan dengan projek yang sedia ada. Ia menyediakan API yang mudah dan fleksibel yang menjadikannya perlawanan sempurna untuk CMS tanpa kepala.
Mengintegrasikan CMS tanpa kepala dengan Vue.js melibatkan beberapa langkah. Pertama, anda perlu memilih CMS tanpa kepala yang menyokong komunikasi berasaskan API. Seterusnya, anda perlu menyediakan projek Vue.js anda dan memasang kebergantungan yang diperlukan. Anda kemudian boleh menggunakan API CMS untuk mendapatkan kandungan dan memaparkannya dalam aplikasi Vue.js anda. Sesetengah CMS juga menawarkan SDK atau plugin untuk menjadikan integrasi ini lebih mudah.
Ya, selagi CMS tanpa kepala menyokong komunikasi berasaskan API, anda boleh menggunakan mana-mana CMS tanpa kepala dengan Vue.js. Ini kerana vue.js adalah rangka kerja front-end yang berkomunikasi dengan back-end (dalam kes ini CMS). Beberapa CMS yang tidak mempunyai kepala yang boleh anda gunakan dengan vue.js termasuk strapi, kewarasan, dan buttercms.
Terdapat banyak projek yang menggunakan CMS tanpa kepala dan Vue.js. Projek-projek ini terdiri daripada blog dan laman web e-dagang ke aplikasi web sepenuhnya. Beberapa contoh termasuk tapak dokumen VUE.JS menggunakan Vuepress (penjana laman web statik berasaskan VUE), dan laman web StoryBlok menggunakan StoryBlok (CMS tanpa kepala) dan NUXT.JS (rangka kerja VUE.JS).
CMS tanpa kepala dapat meningkatkan prestasi aplikasi Vue.js. Dengan memisahkan backend dan frontend, ia membolehkan penghantaran kandungan yang lebih cekap. CMS hanya boleh menyampaikan kandungan yang diperlukan, dengan itu mengurangkan jumlah data yang perlu dihantar dan diproses. Ini boleh membawa kepada masa beban halaman yang lebih cepat dan pengalaman pengguna yang lebih lancar.
Kesukaran berhijrah dari CMS tradisional ke CMS tanpa kepala dalam projek VUE.JS bergantung kepada kerumitan projek dan CMS yang digunakan. Walau bagaimanapun, CMS yang paling tidak berkepala menyediakan alat dan dokumentasi untuk membantu dalam proses penghijrahan. Selain itu, sejak Vue.js adalah rangka kerja yang fleksibel dan modular, ia sering boleh menyesuaikan diri dengan migrasi tersebut tanpa perubahan besar kepada kod sedia ada.
Ya, CMS tanpa kepala menggunakan Vue.js boleh menyokong pelbagai bahasa. Ramai CMSS tanpa kepala menawarkan sokongan berbilang bahasa terbina dalam, membolehkan anda menguruskan kandungan dalam bahasa yang berbeza. Dari segi vue.js, anda boleh menggunakan perpustakaan seperti VUE-I18N untuk mengendalikan pengantarabangsaan.
Menggunakan CMS tanpa kepala Vue.js boleh menjadi sangat selamat. Pemisahan backend dan frontend menambah lapisan keselamatan tambahan kerana ia mengurangkan permukaan serangan. Di samping itu, kebanyakan CMSS tanpa kepala menawarkan ciri keselamatan yang kuat seperti penyulitan SSL, pengesahan pengguna, dan kawalan akses. Vue.js juga mempunyai perlindungan terbina dalam kelemahan web biasa.
Ya, anda boleh menggunakan CMS tanpa kepala dengan Vue.js untuk pembangunan aplikasi mudah alih. Kerana CMS tanpa kepala menyediakan kandungan melalui API, ia dapat memberikan kandungan kepada mana -mana platform, termasuk aplikasi mudah alih. Vue.js boleh digunakan untuk membangunkan aplikasi mudah alih menggunakan rangka kerja seperti NativeScript atau WEEX.
Prospek pembangunan masa depan menggunakan CMS tanpa kepala dan vue.js adalah luas. Kedua -dua teknologi itu semakin meningkat kadar penembusan dan mereka digunakan dalam lebih banyak projek. Fleksibiliti dan kecekapan gabungan ini, serta kelebihan prestasi, menjadikannya pilihan yang kuat untuk pembangunan web moden. Memandangkan lebih banyak pemaju menjadi biasa dengan teknologi ini, kita boleh mengharapkan untuk melihat lebih banyak kegunaan dan integrasi yang inovatif.
Atas ialah kandungan terperinci Cara Membina End Depan Vue untuk CMS Tanpa Ketua. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!