Ditulis oleh Dubem Izuorah
Bagi pembangun kreatif di luar sana yang mencari projek perayaan yang memanfaatkan kemahiran pengekodan anda, mari bina Kad Ucapan Percutian digital yang boleh anda sesuaikan, tambah foto anda sendiri dan muat turun serta-merta. Kami akan menggunakan beberapa teknologi web yang canggih untuk menjayakan perkara ini, dan sepanjang perjalanan, anda akan belajar tentang penjanaan grafik, beberapa pakej hebat dan beberapa helah Vue 3 yang kemas.
Tangkapan skrin antara muka Pembuat Kad Ucapan Percutian
Menjelang akhir tutorial ini, anda akan mempunyai:
Kami akan menggunakan Nuxt 3 sebagai rangka kerja kami kerana ia menyediakan persediaan yang teguh, termasuk bateri untuk aplikasi Vue. Buka terminal anda dan mari buat projek kami dengan menjalankan arahan di bawah:
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Kenapa Nuxt? Ia memberi kami asas yang kukuh dengan penghalaan terbina dalam, penyepaduan modul yang mudah dan persediaan mudah secara keseluruhan. Sesuai untuk pembuat kad ucapan kami!
Sekarang, kami akan menambah perpustakaan yang akan menjadikan keajaiban penjanaan kad kami berlaku. Jalankan arahan berikut pada terminal anda:
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Biar saya rungkaikan sebab kami memilih setiap satu daripada ini:
Mari kemas kini nuxt.config.ts kami untuk menyediakan persekitaran pembangunan kami:
? nuxt.config.ts
export default defineNuxtConfig({ ssr: false, devtools: { enabled: true }, modules: ["@nuxtjs/tailwindcss"], });
Kami melumpuhkan pemaparan sebelah pelayan untuk apl sebelah pelanggan ini dan mendayakan modul CSS Tailwind. Ini memberikan kami persediaan yang ringan dan responsif yang sesuai untuk pembuat kad ucapan kami.
Sekarang kita semua telah bersedia, mari kita selami dalam membuat Pembuat Kad Percutian kami langkah demi langkah.
Mula-mula kita fokus pada mencipta reka letak yang ringkas untuk pembuat kad kami. Kami akan menyediakan borang dengan medan untuk pengguna menambah nama, sapaan dan muat naik imej. Kami juga akan menambah kawasan pratonton tempat kad akan dipaparkan.
Begini rupa reka letak asas:
? app.vue
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Mengapa kita memerlukan persediaan ini?
Seterusnya, mari buat komponen templat kad yang kami import sebelum ini. Di sinilah keajaiban berlaku.
Kami akan menggunakan data daripada borang untuk memperibadikan kad. Dalam komponen/ChristmasCard.vue, kami akan mereka bentuk templat visual kad kami. Fikirkan ini seperti mereka bentuk kanvas yang membolehkan pengguna memperibadikan ucapan mereka.
? komponen/ChristmasCard.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Memecahkannya:
Di sinilah kami mengikat segala-galanya bersama-sama. Kami akan menukar komponen ChristmasCard kepada SVG.
? app.vue
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Biar saya jelaskan:
Mari kita selesaikan semua yang telah kita usahakan dengan menambahkan beberapa fungsi utiliti penting untuk ciri kod dan templat kami.
Menambah Sokongan Muat Naik Imej
Kami menambah fungsi untuk mengendalikan muat naik imej. Ini akan memastikan pengguna boleh memilih imej, menyemak sama ada ia berada dalam had saiz (100KB) dan memaparkannya.
Tampal ini di bawah kod refreshGraphics:
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Mengapa menyemak saiz fail? Kami mengehadkan saiz fail untuk memastikan prestasi lancar. Apa-apa sahaja yang lebih besar boleh memperlahankan keadaan, jadi 100KB ialah had atas yang selamat.
Seterusnya, kami akan menjadikan komponen Vue sebagai rentetan HTML. Ini membolehkan kami menggunakan Vue untuk pemaparan sebelah pelayan, templat e-mel atau penjanaan tapak statik. Dalam kes ini, ia adalah untuk menjana templat kad ucapan. Mari tambahkan ini juga pada kod kami.
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Akhir sekali, mari tambah kod yang membolehkan kami memuat turun kad kami sebagai JPEG.
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Mengapa ini berfungsi? Dengan menggunakan HTML Canvas API, kami boleh melukis SVG pada kanvas dan menukarnya kepada JPEG untuk muat turun mudah. Ini cara yang cepat dan cekap untuk menjana fail imej daripada grafik vektor.
Untuk memastikan elemen SVG dipaparkan dengan betul dalam bekas, kami perlu menggunakan beberapa penggayaan CSS. Memandangkan SVG yang dijana mempunyai saiz tetap 1080px kali 1080px, tetapi bekas induk lebih kecil, kita perlu menskalakan SVG agar muat di dalam bekas tanpa herotan.
? app.vue
export default defineNuxtConfig({ ssr: false, devtools: { enabled: true }, modules: ["@nuxtjs/tailwindcss"], });
Peraturan CSS ini memastikan bahawa elemen SVG di dalam div .banner-here diubah saiz untuk mengisi ruang yang tersedia sambil mengekalkan nisbah bidangnya.
Sekarang, projek anda sepatutnya kelihatan seperti tangkapan skrin ini. Mari jalankan untuk melihat keajaiban sebenar!
Untuk melihat apl kami dalam tindakan, jalankan arahan di bawah dan buka http://localhost:3000 pada penyemak imbas anda.
Untuk rujukan, berikut ialah repo Github untuk tutorial ini.
<template> <div> <p><strong>So what’s happening here?</strong></p> <ol> <li> <strong>Card Preview:</strong> The with v-html="svg" is where our card will appear as an SVG once it’s generated. </li> <li><strong>Form Fields:</strong></li> <ul> <li>Two text fields: name and greeting. These will dynamically update the card when the user types.</li> <li>File input: Allows users to upload an image.</li> </ul> <ol> <li> <strong>File Restrictions:</strong> The small tag below the file input informs users about allowed file size and formats. Large images can slow down rendering, so we’re capping the size at 100KB.</li> <li> <strong>Download Button:</strong> This triggers the downloadSvgAsJpeg function, which saves the card as a JPEG image.</li> </ol> <h3> Step 2. Setting up Dependencies </h3> <p>Now let’s set up the logic and install the packages needed to power our Holiday Card Maker. Let’s import a few packages that will make things easier for us.</p> <p>? <strong>app.vue</strong><br> </p> <pre class="brush:php;toolbar:false">... </template> <script setup lang="ts"> import { createSSRApp } from "vue"; import { renderToString } from "@vue/server-renderer"; import { useLocalStorage, watchDebounced } from "@vueuse/core"; import satori from "satori"; import { html } from "satori-html"; import ChristmasCard from "./components/ChristmasCard.vue"; const form = useLocalStorage("app-form", { name: "", greeting: "Merry Christmas", photo: null, }); const svg = ref(""); const fonts = ref([]); ... </script>
Anda sepatutnya melihat sesuatu yang menyerupai antara muka dalam GIF di atas. Anda boleh mengedit butiran, menambah imej dan memuat turun imej anda. tahniah! Anda kini mempunyai pembuat Kad Percutian peribadi anda sendiri.
Anda baru sahaja membina pembuat kad ucapan yang diperibadikan! ? Tetapi jangan berhenti di sini. Eksperimen dengan reka bentuk yang berbeza, tambah lebih banyak pilihan penyesuaian atau buat kad untuk majlis lain.
Beberapa idea untuk mengembangkan projek anda:
Ingin melakukan lebih banyak perkara di sisi pelanggan? Temui cara untuk memaparkan objek 3d dalam penyemak imbas dengan membaca artikel ini.
Asalnya diterbitkan di https://www.vuemastery.com pada 19 Disember 2024.
Atas ialah kandungan terperinci Bina Pembuat Kad Ucapan dengan Vue Satori. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!