作者 デュベム・イズオラ
コーディング スキルを活用したお祝いプロジェクトを求めているクリエイティブ デベロッパーの皆さんは、カスタマイズしたり、独自の写真を追加したり、すぐにダウンロードしたりできるデジタル ホリデー グリーティング カードを作成しましょう。これを実現するためにいくつかの最先端の 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) 内かどうかを確認して表示できるようになります。
これをrefreshGraphicsコードの下に貼り付けます:
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
ファイル サイズを確認する理由 スムーズなパフォーマンスを確保するためにファイル サイズを制限しています。これより大きいと動作が遅くなる可能性があるため、100 KB が安全な上限です。
次に、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 のサイズは 1080 ピクセル x 1080 ピクセルの固定サイズですが、親コンテナーの方が小さいため、歪みなくコンテナー内に収まるように 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 オブジェクトをレンダリングする方法を学びましょう。
元々は、2024 年 12 月 19 日に https://www.vuemastery.com で公開されました。
以上がVueSatori を使用してグリーティング カード メーカーを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。