27/01/2023
Forbedr Brugeroplevelsen med Quasar Notify
I den moderne digitale verden er rettidig og relevant kommunikation nøglen til en succesfuld applikation. Push-notifikationer og in-app beskeder spiller en afgørende rolle i at holde brugerne engagerede og informerede. Quasar Framework, kendt for sin alsidighed og brugervenlighed, tilbyder et kraftfuldt plugin kaldet Notify, der gør det nemt at implementere disse kommunikationsstrategier. Dette plugin er designet til at vise animerede beskeder, der svæver over din applikations indhold, og fungerer som en effektiv måde at advare brugere om begivenheder, give feedback eller endda engagere dem gennem interaktive handlinger. I denne dybdegående guide vil vi udforske alle facetter af Quasar Notify, fra den grundlæggende opsætning til avancerede konfigurationer og integration med tjenester som Firebase.

Hvad er Quasar Notify?
Quasar Notify er et plugin, der giver Quasar-udviklere mulighed for at vise brugervenlige, animerede beskeder. Disse beskeder, ofte kendt som 'toasts' eller 'snackbars', er ideelle til at levere kortfattet information til brugeren uden at afbryde deres nuværende workflow. De kan konfigureres med forskellige stilarter, ikoner, handlinger og positioner, hvilket giver stor fleksibilitet til at matche din applikations design og funktionalitet.
Installation og Opsætning
For at bruge Quasar Notify i dit projekt, skal det først importeres og konfigureres i din quasar.config fil. Dette sikrer, at pluginet er tilgængeligt i hele din applikation.
// quasar.config.js export default { framework: { plugins: [ 'Notify' ], config: { // Quasar Notify konfiguration her // notify: {} } }, // ... andre Quasar konfigurationer }; Grundlæggende Brug
Når Notify er installeret, kan du begynde at sende beskeder. Dette kan gøres både uden for og inden for Vue-komponenter.
Uden for en Vue-fil:
Hvis du skal sende en notifikation fra en fil, der ikke er en Vue-komponent (f.eks. en utility-fil eller en boot-fil), skal du importere Notify direkte.
import { Notify } from 'quasar'; // Simpel besked Notify.create('Dette er en simpel besked!'); // Besked med konfigurationsobjekt Notify.create({ message: 'Advarsel: Noget gik galt!' }); Inden for en Vue-fil (Composition API):
I Vue 3 med Composition API bruger du useQuasar hooket til at få adgang til Quasar-funktioner, herunder notify.
import { useQuasar } from 'quasar'; export default { setup() { const $q = useQuasar(); const showNotification = () => { $q.notify('Besked fra Vue-komponent!'); $q.notify({ message: 'Succes! Din handling blev udført.', color: 'primary' }); }; return { showNotification }; } }; Konfigurationsmuligheder for Notifikationer
Quasar Notify tilbyder et bredt spektrum af konfigurationsmuligheder for at skræddersy dine beskeder. Her er nogle af de mest anvendte:
- message: (String) Selve beskeden, der skal vises.
- caption: (String) En supplerende tekst, der vises under beskeden.
- color: (String) Farven på notifikationen (f.eks. 'primary', 'secondary', 'red', 'green').
- textColor: (String) Farven på teksten.
- icon: (String) Navnet på en Quasar-ikon, der skal vises til venstre for beskeden.
- iconSize: (String) Størrelsen på ikonet.
- avatar: (String) En URL til et billede, der skal vises som avatar.
- spinner: (Boolean/String) Viser et spinner-ikon. Kan også være et specifikt Quasar-ikon-navn til spinneren.
- position: (String) Positionen på skærmen (f.eks. 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'center').
- timeout: (Number) Hvor mange millisekunder notifikationen skal vises, før den automatisk forsvinder. Sæt til 0 for ingen automatisk lukning.
- actions: (Array) En array af knapper, der kan tilføjes til notifikationen.
- group: (String/Boolean) Bruges til at gruppere identiske notifikationer. Sæt til
falsefor at deaktivere gruppering. En streng værdi giver en brugerdefineret gruppe. - progress: (Boolean) Viser en progress bar, der indikerer, hvornår notifikationen forsvinder. Kræver
timeoutsat til en værdi større end 0. - html: (Boolean) Tillader brug af HTML i
message-feltet. Vær forsigtig med XSS-angreb og saniter altid din input. - classes: (String) Tilføjer brugerdefinerede CSS-klasser til notifikationen.
- attrs: (Object) Tilføjer brugerdefinerede HTML-attributter til notifikationens rod-element.
Eksempler på Avanceret Brug
Notifikationer med Handlinger
Du kan tilføje knapper til dine notifikationer, f.eks. en 'Luk'-knap eller knapper til specifikke handlinger.

$q.notify({ message: 'Denne besked har handlinger!', actions: [ { icon: 'done', color: 'white', handler: () => { // Gør noget, når knappen trykkes console.log('Handling udført!'); } }, { icon: 'close', color: 'white', handler: () => { // Lukkes automatisk, hvis der er en handler } } ] }); TIP: Hvis du definerer handlinger, vil notifikationen automatisk blive lukket, når brugeren vælger en handling.
Gruppering af Notifikationer
For at undgå at oversvømme brugeren med identiske beskeder, kan Quasar Notify gruppere dem. Når flere notifikationer med samme indhold og position udløses, vises kun den første, og en tæller angiver antallet af gentagelser.
// Grupperet (standard) $q.notify({ message: 'Dette er en gentaget besked' }); $q.notify({ message: 'Dette er en gentaget besked' }); // Viser en tæller // Deaktiver gruppering $q.notify({ message: 'Denne besked grupperes ikke', group: false }); // Brugerdefineret gruppe $q.notify({ message: 'Besked A', group: 'mine_beskeder' }); $q.notify({ message: 'Besked B', group: 'mine_beskeder' }); // Erstatter Besked A Opdaterbare Notifikationer
For igangværende processer kan du opdatere en notifikation i stedet for at vise en ny. Dette er især nyttigt til at vise statusopdateringer.
const notif = $q.notify({ message: 'Behandler...', spinner: true, group: false, // Vigtigt for opdatering timeout: 0, // Manuel lukning progress: true // Viser progress bar (valgfrit) }); // Senere, for at opdatere: notif('Behandling fuldført!', { color: 'positive' }); // For at lukke den manuelt: notif(); // Kalder med ingen argumenter lukker notifikationen Foruddefinerede Typer
Quasar Notify leveres med fire foruddefinerede typer, der giver hurtig styling:
positive: Typisk grøn, til succesmeddelelser.negative: Typisk rød, til fejlmeddelelser.warning: Typisk gul, til advarsler.info: Typisk blå, til informationsmeddelelser.
$q.notify({ message: 'Succes!', type: 'positive' }); $q.notify({ message: 'Fejl!', type: 'negative' }); $q.notify({ message: 'Advarsel!', type: 'warning' }); $q.notify({ message: 'Information', type: 'info' }); Brugerdefinerede Typer
Du kan også registrere dine egne notifikationstyper for at genbruge specifikke stilarter og ikoner.
// I en boot-fil (f.eks. src/boot/notify-defaults.js) import { Notify } from 'quasar'; Notify.registerType('my-custom-type', { icon: 'announcement', progress: true, color: 'brown', textColor: 'white', classes: 'glossy' }); // Brug af den brugerdefinerede type: $q.notify({ message: 'Brugerdefineret notifikation!', type: 'my-custom-type' }); Brug af HTML
Med html: true kan du indsætte HTML-kode direkte i din besked. Husk at saniter dine input for at undgå sikkerhedsbrister.
$q.notify({ message: 'Du kan bruge fed tekst og kursiv.', html: true }); Programmatisk Lukning
I tilfælde, hvor notifikationen ikke skal lukkes automatisk, kan du få en reference til notifikationen og lukke den manuelt.
const dismissNotify = $q.notify({ message: 'Denne lukkes manuelt', timeout: 0 // Ingen automatisk lukning }); // For at lukke notifikationen: dismissNotify(); Standardkonfiguration for Quasar Notify
For at spare tid og sikre konsistens kan du definere globale standardindstillinger for alle dine notifikationer.

Metode 1: quasar.config filen
Du kan angive standardindstillinger direkte i din quasar.config fil under framework.config.notify.
// quasar.config.js export default { framework: { plugins: ['Notify'], config: { notify: { position: 'top-right', timeout: 3000, textColor: 'white', actions: [ { icon: 'close', color: 'white' } ] } } } }; Metode 2: Boot File
En mere organiseret måde er at bruge en boot-fil til at sætte standarderne.
1. Opret en boot-fil:
$ quasar new boot notify-defaults 2. Tilføj filen til boot arrayet i quasar.config:
// quasar.config.js export default ctx => ({ boot: [ 'notify-defaults' // Navnet på din boot-fil // ... andre boot-filer ], // ... }); 3. Konfigurer standarderne i den nye boot-fil (f.eks. src/boot/notify-defaults.js):
import { Notify } from 'quasar'; Notify.setDefaults({ position: 'bottom-left', timeout: 2000, color: 'info', textColor: 'black', actions: [ { icon: 'info', color: 'black', handler: () => { console.log('Info handling'); } } ] }); ADVARSEL: Standardhandlinger defineret via setDefaults med handlers vil fungere, men du kan kun angive standardhandlinger på denne måde. Specifikke handlinger for individuelle notifikationer skal stadig defineres i selve Notify.create() kaldet.
Integration med Firebase Push Notifikationer
At sende notifikationer fra Firebase til din Quasar-applikation involverer typisk Firebase Cloud Messaging (FCM). Processen er lidt mere kompleks, da den kræver opsætning af både Firebase og Quasar for at modtage og håndtere disse beskeder.
Overordnet Proces:
- Firebase Setup: Konfigurer din app i Firebase, og aktiver FCM.
- Device Token: Din Quasar-app skal anmode om en FCM device-token fra brugerens enhed. Denne token bruges af Firebase til at sende notifikationer til den specifikke enhed.
- Server-side Logic: Når en begivenhed udløser en notifikation, sender din server (eller en Firebase Function) en besked via FCM API'et til den relevante device-token.
- Quasar Client-side Handling: Din Quasar-app skal have kode, der lytter efter indkommende FCM-beskeder. Når en besked modtages, kan du bruge Quasar Notify til at vise den for brugeren.
Implementering i Quasar:
For mobile applikationer bygget med Capacitor eller Cordova, kan du bruge Firebase's SDK'er til at håndtere push-notifikationer. Dette indebærer typisk at initialisere Firebase tidligt i appens livscyklus (ofte i en boot-fil) og registrere listeners for FCM-meddelelser.
Koden, der initialiserer Firebase og håndterer notifikationer, kan se således ud (eksempel med Composition API og antaget Firebase-konfiguration):
// Eksempel: src/boot/firebase-messaging.js import { boot } from 'quasar/wrappers'; import { initializeApp } from 'firebase/app'; import { getMessaging, getToken, onMessage } from 'firebase/messaging'; import { Notify } from 'quasar'; // Din Firebase konfiguration const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID", appId: "YOUR_APP_ID" }; // Initialiser Firebase const app = initializeApp(firebaseConfig); const messaging = getMessaging(app); // Funktion til at få FCM Token async function getDeviceToken() { try { const token = await getToken(messaging, { vapidKey: 'YOUR_VAPID_PUBLIC_KEY' // Nødvendigt for web push }); if (token) { console.log('FCM Token:', token); // Send token til din backend her return token; } else { console.log('Ingen FCM token fundet.'); return null; } } catch (error) { console.error('Fejl ved hentning af FCM token:', error); return null; } } // Lyt efter indkommende beskeder (når appen er åben) onMessage(messaging, (payload) => { console.log('Modtaget besked:', payload); const notification = payload.notification; if (notification) { Notify.create({ message: notification.title, caption: notification.body, color: 'info', icon: 'notifications' }); } }); export default boot(({ app }) => { // Gør Firebase app eller messaging instans tilgængelig globalt hvis nødvendigt // app.config.globalProperties.$firebaseApp = app; // app.config.globalProperties.$firebaseMessaging = messaging; // Anmod om token, når appen starter getDeviceToken(); }); Husk at tilføje firebase-messaging.js til din boot array i quasar.config.

Opsummering
Quasar Notify er et ekstremt alsidigt værktøj til at forbedre brugerkommunikationen i din applikation. Ved at mestre dets konfigurationsmuligheder, fra grundlæggende beskeder til avancerede funktioner som gruppering og opdaterbare notifikationer, kan du skabe en mere dynamisk og engagerende brugeroplevelse. Integrationen med Firebase Cloud Messaging åbner yderligere op for muligheden for at levere realtids-push-notifikationer, hvilket er afgørende for moderne mobile applikationer.
Ofte Stillede Spørgsmål (FAQ)
Hvordan kan jeg sende notifikationer fra Firebase til Quasar?
Dette kræver integration med Firebase Cloud Messaging (FCM). Din Quasar-app skal initialisere Firebase, anmode om en FCM device-token, sende denne token til din backend, og derefter implementere en listener for indkommende FCM-beskeder. Når en besked modtages, kan du bruge $q.notify() til at vise den for brugeren.
Hvordan sætter jeg en standard Quasar notifikationskonfiguration?
Du kan definere standardindstillinger enten direkte i quasar.config filen under framework.config.notify eller ved at oprette en boot-fil, der bruger Notify.setDefaults() metoden.
Kan jeg bruge HTML i Quasar notifikationer?
Ja, ved at sætte prop'en html: true. Vær dog yderst forsigtig med sikkerheden og saniter altid indholdet for at undgå XSS-angreb.
Hvordan lukker jeg en Quasar notifikation programmatisk?
Når du kalder $q.notify(...), returneres en funktion. Kald denne returnerede funktion (uden argumenter) for at lukke den specifikke notifikation.
Hvad sker der, hvis jeg sender den samme notifikation flere gange?
Som standard grupperes identiske notifikationer. Kun den første vises, og en tæller indikerer antallet af gentagelser. Du kan deaktivere dette ved at sætte group: false eller angive et brugerdefineret gruppenavn.
Hvis du vil læse andre artikler, der ligner Quasar Notifikationer: En Komplet Guide, kan du besøge kategorien Mobil.
