Écrit par Dubem Izuorah
Pour les développeurs créatifs à la recherche d'un projet festif qui exploite vos compétences en codage, créons une carte de vœux numérique que vous pouvez personnaliser, ajouter votre propre photo et télécharger instantanément. Nous utiliserons des technologies Web de pointe pour y parvenir, et en cours de route, vous découvrirez la génération de graphiques, plusieurs packages intéressants et quelques astuces intéressantes avec Vue 3.
Capture d'écran de l'interface de Holiday Greeting Card Maker
À la fin de ce tutoriel, vous aurez :
Nous utiliserons Nuxt 3 comme framework car il fournit une configuration robuste et avec piles incluses pour les applications Vue. Ouvrez votre terminal et créons notre projet en exécutant les commandes ci-dessous :
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Pourquoi Nuxt ? Il nous donne une base solide avec un routage intégré, une intégration facile des modules et une configuration globale simple. Parfait pour notre créateur de cartes de vœux !
Maintenant, nous allons ajouter les bibliothèques qui permettront à la magie de notre génération de cartes de se produire. Exécutez les commandes suivantes sur votre terminal :
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Permettez-moi de vous expliquer pourquoi nous choisissons chacun de ces éléments :
Mettons à jour notre nuxt.config.ts pour configurer notre environnement de développement :
? nuxt.config.ts
export default defineNuxtConfig({ ssr: false, devtools: { enabled: true }, modules: ["@nuxtjs/tailwindcss"], });
Nous désactivons le rendu côté serveur pour cette application côté client et activons le module CSS Tailwind. Cela nous donne une configuration légère et réactive, parfaite pour notre créateur de cartes de vœux.
Maintenant que nous sommes tous configurés, passons à la création étape par étape de notre créateur de cartes de vœux.
Concentrons-nous d’abord sur la création d’une mise en page simple pour notre créateur de cartes. Nous allons créer un formulaire avec des champs permettant à l'utilisateur d'ajouter un nom, un message d'accueil et un téléchargement d'image. Nous ajouterons également une zone d'aperçu où la carte sera affichée.
Voici à quoi ressemblera la mise en page de base :
? app.vue
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Pourquoi avons-nous besoin de cette configuration ?
Ensuite, créons le composant de modèle de carte que nous avons importé précédemment. C'est là que la magie opère.
Nous utiliserons les données du formulaire pour personnaliser la carte. Dans composants/ChristmasCard.vue, nous concevrons le modèle visuel de notre carte. Pensez à cela comme à la conception d'un canevas sur lequel les utilisateurs peuvent personnaliser leur message d'accueil.
? composants/ChristmasCard.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Décomposition :
C’est ici que nous lions tout ensemble. Nous allons convertir le composant ChristmasCard en SVG.
? app.vue
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Laissez-moi vous expliquer :
Terminons tout ce sur quoi nous avons travaillé en ajoutant quelques fonctions utilitaires essentielles pour nos fonctionnalités de code et de modèle.
Ajout de la prise en charge du téléchargement d'images
Nous ajoutons des fonctionnalités pour gérer les téléchargements d’images. Cela garantira que les utilisateurs peuvent sélectionner une image, vérifier si elle respecte la limite de taille (100 Ko) et l'afficher.
Collez ceci sous le code RefreshGraphics :
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Pourquoi vérifier la taille du fichier ? Nous limitons la taille du fichier pour garantir des performances fluides. Tout ce qui est plus volumineux pourrait ralentir les choses, donc 100 Ko est une limite supérieure sûre.
Ensuite, nous allons rendre le composant Vue sous forme de chaîne HTML. Cela nous permet d'utiliser Vue pour le rendu côté serveur, les modèles de courrier électronique ou la génération de sites statiques. Dans ce cas, il s’agit de générer un modèle de carte de vœux. Ajoutons ceci également à notre code.
npx nuxi init christmas-card-maker cd christmas-card-maker yarn install
Enfin, ajoutons le code qui nous permettra de télécharger notre carte au format JPEG.
? app.vue
yarn add @vue/server-renderer @vueuse/core nuxt satori satori-html yarn add -D @nuxtjs/tailwindcss
Pourquoi cela fonctionne-t-il ? En utilisant l'API HTML Canvas, nous pouvons dessiner le SVG sur le canevas et le convertir en JPEG pour un téléchargement facile. C'est un moyen rapide et efficace de générer des fichiers image à partir de graphiques vectoriels.
Pour garantir que l'élément SVG s'affiche correctement dans le conteneur, nous devons appliquer un style CSS. Étant donné que le SVG généré a une taille fixe de 1080 px sur 1080 px, mais que le conteneur parent est plus petit, nous devons redimensionner le SVG pour qu'il s'adapte à l'intérieur du conteneur sans distorsion.
? app.vue
export default defineNuxtConfig({ ssr: false, devtools: { enabled: true }, modules: ["@nuxtjs/tailwindcss"], });
Cette règle CSS garantit que l'élément SVG à l'intérieur du div .banner-here est redimensionné pour remplir l'espace disponible tout en conservant ses proportions.
À présent, votre projet devrait ressembler à cette capture d'écran. Lançons-le pour voir la vraie magie !
Pour voir notre application en action, exécutez la commande ci-dessous et ouvrez http://localhost:3000 sur votre navigateur.
Pour référence, voici le dépôt Github de ce tutoriel.
<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>
Vous devriez voir quelque chose qui ressemble à l'interface dans le GIF ci-dessus. Vous pouvez modifier les détails, ajouter une image et télécharger votre image. Bravo! Vous disposez désormais de votre propre créateur de cartes de vœux personnel.
Vous venez de créer un créateur de cartes de vœux personnalisées ! ? Mais ne vous arrêtez pas là. Expérimentez avec différents designs, ajoutez plus d'options de personnalisation ou créez même des cartes pour d'autres occasions.
Quelques idées pour élargir votre projet :
Vous souhaitez en faire plus côté client ? Découvrez comment rendre des objets 3D dans le navigateur en lisant cet article.
Publié à l'origine sur https://www.vuemastery.com le 19 décembre 2024.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!