作者 Dubem Izuorah
對於尋求利用您的編碼技能的節日專案的創意開發人員,讓我們建立一個數位節日賀卡,您可以自訂它、添加您自己的照片並立即下載。我們將使用一些尖端的 Web 技術來實現這一目標,在此過程中,您將了解圖形生成、幾個很酷的軟體包以及一些簡潔的 Vue 3 技巧。
節慶賀卡製作介面截圖
在本教學結束時,您將擁有:
我們將使用 Nuxt 3 作為我們的框架,因為它為 Vue 應用程式提供了強大的、包含電池的設定。打開終端,讓我們透過執行以下命令來創建我們的專案:
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
為什麼選擇 Nuxt?它為我們提供了內建路由、簡單模組整合和整體簡單設定的堅實基礎。非常適合我們的賀卡製作者!
現在,我們將添加庫,使我們的卡片生成魔法得以實現。在終端機上執行以下命令:
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
讓我來解釋一下我們選擇其中每一個的原因:
讓我們更新 nuxt.config.ts 設定我們的開發環境:
? nuxt.config.ts
export default defineNuxtConfig({ ssr: false, devtools: { enabled: true }, modules: ["@nuxtjs/tailwindcss"], });
我們將停用此客戶端應用程式的伺服器端渲染並啟用 Tailwind CSS 模組。這為我們提供了一個輕量級、響應式的設置,非常適合我們的賀卡製作者。
現在我們已經完成所有設置,讓我們開始逐步創建我們的節日賀卡製作工具。
讓我們先專注於為我們的卡片製作器創建一個簡單的佈局。我們將設定一個包含欄位的表單,供使用者新增姓名、問候語和上傳圖像。我們還將添加一個顯示卡片的預覽區域。
基本版面如下:
? app.vue
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
為什麼我們需要這個設定?
接下來,讓我們建立先前匯入的卡片模板元件。這就是奇蹟發生的地方。
我們將使用表單中的資料來個人化卡片。在 Components/ChristmasCard.vue 中,我們將設計卡片的視覺模板。可以將其想像為設計一塊畫布,使用者可以在其中個性化他們的問候語。
? 組件/ChristmasCard.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
分解:
這是我們將一切連結在一起的地方。我們將把 ChristmasCard 元件轉換為 SVG。
? app.vue
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
讓我解釋一下:
讓我們透過為程式碼和模板功能添加一些基本的實用函數來結束我們一直在做的所有事情。
新增圖片上傳支援
我們正在新增處理影像上傳的功能。這將確保使用者可以選擇圖像,檢查它是否在大小限制 (100KB) 內,然後顯示它。
將其貼到刷新圖形程式碼下方:
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
為什麼要檢查檔案大小? 我們限製檔案大小以確保流暢的效能。任何更大的值都會減慢速度,因此 100KB 是一個安全上限。
接下來,我們將 Vue 元件渲染為 HTML 字串。這使我們能夠使用 Vue 進行伺服器端渲染、電子郵件範本或靜態網站產生。在本例中,它用於產生賀卡模板。讓我們將其添加到我們的程式碼中。
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
最後,讓我們加入程式碼,使我們能夠以 JPEG 格式下載卡片。
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
為什麼會這樣? 透過使用 HTML Canvas API,我們可以將 SVG 繪製到畫布上並將其轉換為 JPEG 以便於下載。這是一種從向量圖形生成圖像檔案的快速有效的方法。
為了確保 SVG 元素在容器中正確顯示,我們需要套用一些 CSS 樣式。由於產生的 SVG 的大小固定為 1080px x 1080px,但父容器較小,因此我們需要縮放 SVG 以適合容器內部而不變形。
? app.vue
export default defineNuxtConfig({ ssr: false, devtools: { enabled: true }, modules: ["@nuxtjs/tailwindcss"], });
此 CSS 規則可確保調整 .banner-here div 內的 SVG 元素大小以填滿可用空間,同時保持其縱橫比。
現在,您的項目應該類似於此螢幕截圖。讓我們運行一下,看看真正的魔力!
要查看我們的應用程式的運作情況,請執行以下命令並在瀏覽器上開啟 http://localhost:3000。
作為參考,這裡是本教學的 Github 儲存庫。
<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>
您應該會看到類似上面 GIF 中的介面的內容。您可以編輯詳細資訊、新增圖像並下載圖像。恭喜!您現在擁有自己的個人節日賀卡製作工具。
您剛剛建立了一個個人化賀卡製作工具! ?但不要停在這裡。嘗試不同的設計,添加更多自訂選項,甚至為其他場合創建卡片。
擴展項目的一些想法:
想要在客戶端做更多事嗎?閱讀本文,了解如何在瀏覽器中渲染 3D 物件。
原發表於 https://www.vuemastery.com 於 2024 年 12 月 19 日發布。
以上是使用 Vue Satori 建構賀卡製作工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!