Heim > Web-Frontend > js-Tutorial > Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Lisa Kudrow
Freigeben: 2025-02-09 12:19:09
Original
781 Leute haben es durchsucht

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

In diesem Tutorial werden wir sehen, wie wir neben unserer Front-End-Anwendung serverlose Funktionen bereitstellen und eine API erstellen können, die Bilder erzeugt und Metadaten von Links erfasst.

Mit serverlosen Funktionen können Entwickler moderne Funktionen und Funktionen in ihren Anwendungen erstellen und implementieren, ohne die Schmerzen beim Aufstellen und Verwalten von Back-End-Servern durchzusetzen. Die Funktionen werden von Cloud Computing -Unternehmen gehostet und bereitgestellt.

Netlify -Funktionen machen das Erstellen und Bereitstellen von serverlosen Funktionen für Anwendungen, die auf Netlify gehostet werden, einfach.

Key Takeaways

  • Verwenden Sie Puppeter- und Netlify -Funktionen, um einen serverlosen Link -Vorschiff zu erstellen, der Metadaten und Screenshots aus URLs abfährt.
  • Beginnen Sie mit der Einrichtung einer Vue 3 -Anwendung mit Rückenwind -CSS zum Styling, um ein modernes und reaktionsschnelles Design zu gewährleisten.
  • Implementieren Sie Netlify -Funktionen, um Backend -Prozesse wie API -Erstellung zu verarbeiten, ohne Server zu verwalten, die Skalierbarkeit und einfache Bereitstellung zu verbessern.
  • Verwenden Sie Puppeter in Netlify -Funktionen, um Browseraufgaben zu automatisieren, z. B. Screenshots und das Extrahieren von Metadaten aus Webseiten.
  • Bereitstellung der Anwendung auf Netlify und nutzt die kontinuierliche Bereitstellung aus Git -Repositories für optimierte Updates und Wartung.
  • Erweitern Sie die Benutzererfahrung, indem Sie eine VUE -Komponente einbeziehen, die mit der serverlosen Funktion interagiert, um die Link -Vorschau dynamisch auf dem Frontend anzuzeigen.

Voraussetzungen

Um diesem Tutorial zu folgen, müssen Sie mit JavaScript, Vue.js, Git, GitHub und Netlify vertraut sein. Sie sollten auch einen Texteditor - wie VS -Code) mit dem installierten Vetur (für IntelliSense) - und eine aktuelle Version des auf Ihrem Computer installierten Knotens haben. Sie können hier den Knoten installieren. Sie können Ihre Version des Knotens überprüfen, indem Sie den Befehlsknoten -Vin Ihr Terminal ausführen.

Sie sollten auch ein Konto für Netlify haben. Sie können eine erstellen, wenn Sie es noch nicht getan haben.

Was wir bauen

Um anzuzeigen, wie wir einfach serverlose Funktionen mit unserer Front-End-Anwendung einrichten können, erstellen wir eine App mit einer benutzerdefinierten Link-Vorschaukomponente.

Diese Komponente sendet eine Anforderung mit einer URL an unsere serverlose Funktion. Die Funktion verwendet dann Puppenspieler, um Metadaten von der Zielstelle mithilfe der URL zu erhalten und einen Screenshot der Site zu generieren.

Die Funktion sendet die Metadaten und Screenshots an die Komponente auf unserem Front-End zurück, um sie als Link-Vorschau in der Anwendung anzuzeigen.

Hier finden Sie den Link zum Beispielprojekt, das auf Netlify bereitgestellt wird. Und hier ist das Github -Repo, das mit folgt wird.

Erstellen und Einrichten der VUE -Anwendung

Wir werden eine Vue 3 -Anwendung mit Vue CLI erstellen. Wir werden auch Tailwind CSS installieren und einrichten, ein Utility-First CSS-Framework, das Klassen enthält, die wir für unsere App verwenden können, ohne viele benutzerdefinierte CSS schreiben zu müssen.

Installieren und Einrichten von Vue

Um eine Vue -Anwendung schnell zu senken, verwenden wir Vue CLI. Um Vue CLI zu installieren, laufen Sie:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sobald die CLI installiert wurde, können wir ein Projekt erstellen, indem wir ausführen:

vue create link-previewer
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies veranlasst uns, ein Voreinstellung für unsere Installation auszuwählen. Wir wählen "manuell ausgewählte Funktionen", damit wir die von uns benötigten Funktionen auswählen können. Hier sind die Optionen, die ich ausgewählt habe:

Please pick a preset: Manually <span>select features
</span>? Check the features needed <span>for your project: Choose Vue version, Babel, PWA, Router, Vuex, Linter
</span>? Choose a version of Vue.js that you want to start the project with: <span>3.x
</span>? Use <span>history mode for router? (Requires proper server setup for index fallback in production) Yes
</span>? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Where <span>do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Nachdem wir diese Optionen ausgewählt haben, werden wir gefragt, ob wir die Optionen als Voreinstellung für die spätere Verwendung speichern möchten. Wählen Sie y (ja) oder n (nein) und fahren Sie mit der Installation fort.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

CD-Link-Previewer ausführen, um das neu erstellte Projekt einzugeben.

Installieren und Einrichten von Tailwind CSS

Um Tailwind zu installieren, werden wir den POSTCSS 7-Kompatibilitätsbau verwenden, da Tailwind von POSTCSS 8 abhängt-was zum Zeitpunkt des Schreibens noch nicht von Vue 3 unterstützt wird. Deinstallieren Sie eine frühere Tailwind-Installation und installieren :

<span>npm uninstall tailwindcss postcss autoprefixer
</span><span>npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie die Rückenwind -Konfigurationsdateien

Erstellen Sie als nächstes Tailwind.config.js und postcss.config.js Dateien:
npx tailwindcss init <span>-p
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies erstellt eine minimale Datei minimalwind.config.js am Stamm des Projekts.

Konfigurieren Sie Rückenwind, um ungenutzte Stile in der Produktion zu entfernen

Konfigurieren Sie in der Datei Tailwind.config.js die Spüloption mit den Pfaden zu allen Seiten und Komponenten, damit der Schwanzwind nicht verwendete Stile in Produktionsbaustilen kann:
<span>// ./tailwind.config.js
</span>module<span>.exports = {
</span>  <span>purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
</span>  <span>...
</span><span>}
</span>
Nach dem Login kopieren
Nach dem Login kopieren

Rückenwind in die CSS -Datei

einbeziehen

Erstellen Sie die Datei ./src/assets/css/main.css
<span>/* ./src/assets/css/main.css */
</span><span><span>@tailwind base;</span>
</span><span><span>@tailwind components;</span>
</span><span><span>@tailwind utilities;</span>
</span>
<span>body{
</span>  <span><span>@apply bg-gray-50;</span>
</span><span>}
</span>
Nach dem Login kopieren
Nach dem Login kopieren

Tailwind tausch

Stellen Sie schließlich sicher

Und das war's, wir können unseren Server ausführen:
<span>// ./src/main.js
</span><span>import <span>{ createApp }</span> from 'vue'
</span><span>import <span>App</span> from './App.vue'
</span><span>import './registerServiceWorker'
</span><span>import router from './router'
</span><span>import store from './store'
</span><span>import './assets/css/main.css'
</span>
<span>createApp(App).use(store).use(router).mount('#app')
</span>
Nach dem Login kopieren
Nach dem Login kopieren

<span>npm run serve
</span>
Nach dem Login kopieren

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen Jetzt, da die App ausgeführt wird, sollten wir die Standard -Demo -App für Vue sehen und sehen, dass die Basisstile des Tailwinds angewendet wurden.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen Installieren Sie den Tailwind CSS IntelliSense Extension

Installieren Sie für eine reibungslosere Entwicklungserfahrung die Rückenwind -CSS -IntelliSense -Erweiterung für VS -Code.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Grundlegende App -Struktur

Hier ist ein Überblick darüber, wie unser Projektordner aussehen soll:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Eine kurze Einführung in die Netlify -Funktionen

Netlify -Funktionen ist ein Netlify -Produkt, das den Prozess des Erstellens und Bereitstellens von serverlosen Funktionen vereinfacht. Nach der Homepage des Produkts wird es gewohnt:

serverseitiger Code bereitstellen, der als API-Endpunkte funktioniert, automatisch als Reaktion auf Ereignisse ausgeführt wird oder komplexere Jobs im Hintergrund verarbeitet.

Ein grundlegender Netlify -Funktionsdatei exportiert eine Handler -Methode mit der folgenden Syntax:

vue create link-previewer
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

netlify liefert die Ereignis- und Kontextparameter, wenn die Funktion aufgerufen/aufgerufen wird. Wenn der Endpunkt einer Funktion aufgerufen wird, erhält der Handler ein Ereignisobjekt wie folgt:

Please pick a preset: Manually <span>select features
</span>? Check the features needed <span>for your project: Choose Vue version, Babel, PWA, Router, Vuex, Linter
</span>? Choose a version of Vue.js that you want to start the project with: <span>3.x
</span>? Use <span>history mode for router? (Requires proper server setup for index fallback in production) Yes
</span>? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Where <span>do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der Kontextparameter hingegen enthält Informationen über den Kontext, in dem die Funktion aufgerufen wurde.

Innerhalb der Funktion geben wir ein Objekt mit zwei wichtigen Eigenschaften zurück:

  • Statuscode, das in diesem Fall 200 ist
  • Körper, das ein -Szedingungs - -Objekts ist.

Die Funktion wird von unserer Website unter /.netlify/functions/hello aufgerufen und auf Erfolg würde der 200 -Statuscode und die Nachricht „Hallo, Welt!“ Zurückgegeben.

Jetzt, da wir eine Vorstellung davon haben, wie Netlify -Funktionen funktionieren, sehen wir sie in der Praxis.

Erstellen unserer ersten Netlify -Funktion

Um unsere erste Netlify -Funktion zu erstellen, erstellen wir eine neue Dateifunktion/hello.js im Projektverzeichnis und geben Folgendes ein:

<span>npm uninstall tailwindcss postcss autoprefixer
</span><span>npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sobald wir die Funktionsdatei erstellt haben, müssen wir einige notwendige Konfigurationen erstellen, damit wir unsere Funktion lokal ausführen können.

Netlify -Konfiguration

einrichten

Wir erstellen eine netlify.toml -Datei im Stamm

npx tailwindcss init <span>-p
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
netlify sucht und bereitet nun die Funktionen im Ordner der Funktion zum Bauzeit auf und bereitgestellt.

netlify cli

installieren

Um unsere Funktionen lokal auszuführen, ohne auf Netlify bereitzustellen, müssen wir Netlify CLI installieren. Die CLI ermöglicht es uns, unsere Projekte mit einigen großartigen Netlify -Funktionen lokal einzusetzen.

Um die CLI zu installieren, stellen Sie sicher

Dies installiert Netlify CLI weltweit, sodass wir Netlify -Befehle aus jedem Verzeichnis ausführen können. Um die Version, Nutzung usw. zu erhalten, können wir ausführen:
<span>// ./tailwind.config.js
</span>module<span>.exports = {
</span>  <span>purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
</span>  <span>...
</span><span>}
</span>
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie die App mit Netlify Dev
<span>/* ./src/assets/css/main.css */
</span><span><span>@tailwind base;</span>
</span><span><span>@tailwind components;</span>
</span><span><span>@tailwind utilities;</span>
</span>
<span>body{
</span>  <span><span>@apply bg-gray-50;</span>
</span><span>}
</span>
Nach dem Login kopieren
Nach dem Login kopieren
aus

Um unser Projekt lokal mit Netlify CLI auszuführen, stoppen Sie den Dev -Server (falls es aktiv ist), und führen Sie dann aus:

Und hier ist, was wir sehen sollten:
<span>// ./src/main.js
</span><span>import <span>{ createApp }</span> from 'vue'
</span><span>import <span>App</span> from './App.vue'
</span><span>import './registerServiceWorker'
</span><span>import router from './router'
</span><span>import store from './store'
</span><span>import './assets/css/main.css'
</span>
<span>createApp(App).use(store).use(router).mount('#app')
</span>
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen Wenn Sie genau hinschauen, sehen Sie dort ein paar Dinge:

  • Netlify versucht, Umgebungsvariablen aus unseren .Env -Dateien in den Build -Prozess zu injizieren, auf den dann durch unsere Netlify -Funktionen zugegriffen werden kann. In diesem Fall haben wir keine .Env -Datei, daher lädt sie die im Prozess definierten Standards.

  • Zweitens wird unsere Funktionen im Funktionsverzeichnis geladen oder bereitgestellt. Der Funktionsserver wird auf einem anderen und zufälligen Port bereitgestellt - 36647.

  • Zuletzt erkennt es automatisch, mit welchem ​​Framework die Anwendung erstellt wird, und führt die erforderlichen Erstellprozesse aus, um die Anwendung bereitzustellen. In diesem Fall können Sie "Netlify Dev mit Vue.js starten" sehen. Es unterstützt auch React und andere beliebte Frameworks.

netlify startet dann unseren Entwicklungsserver unter http: // localhost: 8888.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Jetzt, da unser Server begonnen hat und unsere Funktionen überlegt sind, können wir ihn anrufen/aufrufen. Standardmäßig können wir mit dieser Route auf unsere Funktionen zugreifen: /.netlify/functions/.

Eine wichtige Sache zu beachten ist, dass wir den Port, in dem unser Funktionserver ausgeführt wird, nicht angeben. Wir können die obige Standardroute verwenden, um mit unserem Funktionsserver zu kommunizieren. Netlify löst automatisch die URL und den Port hinter den Kulissen auf.

Wenn wir eine Get -Anfrage an http: // localhost: 8888/.Netlify/Funktionen/Hallo senden, sollten wir eine Antwort von {"message": "Hallo, Welt!"}.

erhalten

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Großartig! Unsere erste serverlose Funktion funktioniert!

Erstellen Sie die Vorschau -Funktion API

Nachdem unsere Netlify -Funktion funktioniert, können wir mit dem Erstellen der Vorschau -API beginnen. Hier ist ein kurzer Überblick darüber, was unsere Funktions -API für die Funktionen tun wird:

  • es empfängt die Ziel -URL, die vom vorderen Ende
  • gesendet wird.
  • Es gibt die Daten an Puppenspieler
  • weiter
  • Puppenspieler startet dann eine neue kopflose Browserinstanz
  • Puppenspieler öffnet eine neue Seite im Browser und navigiert zur Ziel -URL
  • Puppenspieler extrahiert dann den Inhalt der und <meta> Tags für die Beschreibung der Zielseite
  • Es erfasst einen Screenshot der Seite
Es sendet die Screenshot -Daten wieder an das Frontend

Jetzt, da wir eine grundlegende Vorstellung davon haben, was unsere Funktionen API für die Funktionen tun werden, können wir Funktionen erstellen. Beginnen wir mit der Installation und Einrichtung von Puppeteer für Netlify -Funktionen.

installieren und konfigurieren Sie Puppeteer

Puppenspieler ist eine Knotenbibliothek, die eine hochrangige API zur Steuerung kopfloser Chrom- oder Chrombrowser bietet. Es kann auch so konfiguriert werden, dass das vollständige (nicht headlose) Chrom oder Chrom verwendet wird. Sie können die meisten Dinge tun, die Sie mit Puppenspielern manuell im Browser tun können. Mehr über Puppenspieler finden Sie in der Puppenspieler -Dokumentation.

Um mit Puppenspielern zu beginnen, werden wir es in unserem Projekt installieren.

Puppenspieler für die lokale Entwicklung und Produktion

Puppeteer lädt eine aktuelle Version von Chromium (~ 170 MB MacOS, ~ 282MB Linux, ~ 280 MB Windows) herunter, das garantiert mit der API funktioniert.

Wir können das vollständige Puppenspieler -Paket für die Produktion nicht verwenden. Dies liegt daran, dass Netlify -Funktionen eine maximale Größe von 50 MB haben und das Chrompaket zu groß ist.

Dank dieses sehr nützlichen Artikel von Ire Aderinokun können wir immer noch mit Puppenspielern vor Ort und in der Produktion zusammenarbeiten. Folgendes müssen wir tun:

Puppenspieler als Entwicklungsabhängigkeit * für die lokale Bereitstellung installieren:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Damit Puppenspieler sowohl lokal als auch in der Produktion arbeiten, müssen wir Puppeteer-Core und Chrome-Aws-Lambda als Produktionsabhängigkeiten installieren.

Sie können hier den Unterschied zwischen Puppenspieler und Puppenspielern überprüfen. Der Hauptunterschied besteht jedoch darin, dass Puppeteer-Core bei der Installation nicht automatisch Chrom herunterlädt.

Da Puppeteer-Core einen Browser nicht herunterlädt, installieren wir Chrome-Aws-Lambda, eine "Chrom-Binärdatei für AWS Lambda- und Google Cloud-Funktionen", die wir in unseren Netlify-Funktionen verwenden können. Dies sind die Pakete, die in der Produktion funktionieren:

vue create link-previewer
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt, da wir unsere Pakete installiert haben, lassen Sie uns unsere Funktion erstellen.

Verwenden Sie bereits installierten Browser für Puppenspieler

Wenn Puppenspieler einen vollständigen Browser für die Arbeit vor Ort installieren, kann dies auf langsame Netzwerk- oder Bandbreitenprobleme zurückzuführen sein. Es gibt eine Problemumgehung, die unseren bereits installierten Chrom- oder Chrombrowser für Puppenspieler verwenden soll.

Was wir brauchen, ist der Weg zum Browser in unserer lokalen Maschine. Wir werden dies als unseren ausführbaren Weg verwenden, den wir an die Methode puppeteer.launch () übergeben. Dadurch wird Puppeteer mitgeteilt, wo er die ausführbare Browser -Datei finden soll.

Wenn Sie nicht genau wissen, wo Sie den ausführbaren Pfad finden, öffnen Sie Ihren Browser und gehen Sie zu Chrome: // Version/Um die Version von Chrome anzuzeigen.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

kopieren Sie den Pfad und erstellen Sie eine .env -Datei im Stamm des Projekts.

Please pick a preset: Manually <span>select features
</span>? Check the features needed <span>for your project: Choose Vue version, Babel, PWA, Router, Vuex, Linter
</span>? Choose a version of Vue.js that you want to start the project with: <span>3.x
</span>? Use <span>history mode for router? (Requires proper server setup for index fallback in production) Yes
</span>? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Where <span>do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Um den Inhalt der .Env -Datei zu erhalten, installieren wir ein anderes Paket - dotenv:

<span>npm uninstall tailwindcss postcss autoprefixer
</span><span>npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Jetzt, da wir das Paket erfolgreich installiert haben, erstellen wir die Netlify -Funktion.

Erstellen Sie die Funktion für die Vorbereitung

Erstellen Sie eine neue Datei, ./funktions/generate-preview.js:

npx tailwindcss init <span>-p
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Im obigen Code machen wir eine Reihe von Dingen. Zunächst erhalten wir die Targeturl aus der Anfrage im Ereignis. Dies würde mit einer Postanfrage gesendet.

Als nächstes starten wir den Browser mit dem Chrome-Aws-Lambda-Paket. Wir tun dies mit der Methode puppeteer.launch (). Diese Methode nimmt ein Objekt als Argument mit einigen optionalen Eigenschaften auf. Eine wichtige Eigenschaft, die wir an diese Methode übergeben, ist der ausführbare Weg.

Wir weisen den ausführbaren Weg zu process.env.excecable_path || zu Warten Sie Chromium.execableablePath und ermöglichen es, dass das Paket den verfügbaren kopflosen Browser startet.

Sobald der Browser gestartet wurde, öffnen wir eine neue Seite im Browser mit der Methode von Browser.newPage (). Wir setzen auch unser gewünschtes Browser -Ansichtsfenster für die Seite mit der Methode von Seite.SetViewport () fest.

Beachten Sie, dass wir beim Ausführen einer Funktion das Keyword für das Keyword verwenden. Dies liegt daran

Wir können auch Dinge tun, wie die Medienfunktionen der Seite mit Puppenspielern mithilfe der Methode von EMULATEMEDIAFATRURES () definieren, die eine Reihe von Medienfunktionsobjekten annimmt. So setzen wir das bevorstehende Farbschema auf Dunkelheit.

Site -Meta -Daten und Screenshot

abrufen

Als nächstes navigieren wir zur Ziel -URL und erhalten unseren Titel, unsere Beschreibung und unseren Screenshot:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Im obigen Code verwenden wir einen Trycatch -Block, um unseren Code so zu wickeln, dass wir, wenn etwas schief geht, von Awiit Page.goto (Targeturl), der zur Ziel -URL navigiert Senden Sie es an unser vorderes Ende. Ein Fehler kann durch die Bereitstellung einer ungültigen URL auftreten.

Wenn die URL gültig war, erhalten wir den Titel mit der Seite der Seite. $ Eval (), die dem üblichen Dokument ähnelt. Wir geben den CSS -Selektor - Head> Titel - des Titel -Tags als erstes Argument über. Wir übergeben auch eine Funktion el => el.TextContent als zweites Argument, wobei El ein Parameter ist, den wir an die Funktion übergeben und das Titelelement ist. Wir können jetzt den Wert mit title.textContent erhalten.

Beachten Sie, dass all dies in einen Klammern eingewickelt ist (()) und wir haben ein || null nach Seite. $ eval. Dies ist so, dass der Titel null zugewiesen wird, wenn Seite. $ Eval () den Titel der Seite nicht erhalten.

Um die Beschreibungen der Seite zu erhalten, verwenden wir die Seite von Seite.

Wir übergeben eine Funktion als und argument an die Methode. In der Funktion verwenden wir document.querySelector, um die verschiedenen Meta -Beschreibungen zu erhalten, z. = "" /> Für die OpenGraph -Beschreibung.

Nachdem wir die Elemente erhalten haben, verwenden wir ternäre Operatoren, um den Inhalt zu erhalten und dem Beschreibungsobjekt hinzuzufügen, wenn die Elemente existieren, oder null, wenn das Element nicht vorhanden ist.

Sobald wir die Beschreibungen erhalten haben, machen wir mit der Seite eine Screenshot der Seite ein und schließen den Browser mit Browser.Close ().

Schließlich senden wir die Seitendetails in der Body -Eigenschaft ein JSON -Objekt mit einem Statuscode von 200. Wenn in einem der vorherigen Schritte ein Fehler auftritt, ist er im Catch -Block gefangen und wir senden einen Statuscode von 400 und senden wir die Fehlermeldung stattdessen.

testen und bereitstellen die Funktion

Testen wir unsere Funktion mit einem API -Tester. Sie können Postman- oder Talend -API -Tester in Ihrem Browser installieren oder die Thunder -Client -Erweiterung, einen API -Tester für VS -Code, verwenden.

Sie können auch curl verwenden:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie die Funktion mit dem Befehl netlify dev aus.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Wir können eine Anforderung mit dem Port für den Funktionserver oder den Standard -Port: 8888 Port für den Netlify Dev Server senden, um eine Anforderung an unsere Funktionen zu senden. Ich verwende http: // localhost: 8888/.Netlify/Funktionen/generieren Sie eine Preview, um eine Postanforderung mit einem Objekt zu senden, das das Ziel im Körper enthält:

vue create link-previewer
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wenn wir die Anfrage senden, ist hier die Antwort, die wir erhalten.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Wir erhalten ein JSON -Objekt, das unsere Vorschaubaten enthält:

Please pick a preset: Manually <span>select features
</span>? Check the features needed <span>for your project: Choose Vue version, Babel, PWA, Router, Vuex, Linter
</span>? Choose a version of Vue.js that you want to start the project with: <span>3.x
</span>? Use <span>history mode for router? (Requires proper server setup for index fallback in production) Yes
</span>? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Where <span>do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt, da unsere serverlose Funktion funktioniert, sehen wir sehen, wie wir sie in unserem Frontend verwenden können.

Erstellen der Link -Vorschau -Funktionalität im Client

Um mit unserer Funktion für Generate-Preview-Funktion zu interagieren, müssen wir Postanforderungen mit unserer Targeturl senden.

Wir erstellen LinkPreview -Komponenten, mit denen normale Links angezeigt werden. Diese Komponenten werden ihre Ziel -URLs als Requisiten übergeben. Bevor die Komponente in der Anwendung montiert ist, sendet sie eine Postanforderung mit dem Ziel an unsere serverlose Funktion, erhalten Sie die Vorschaubaten und zeigen sie an, sobald wir auf dem Link schweben.

Erstellen der Link -Vorschau -Komponente

Erstellen Sie zuerst unsere Link -Vorschau -Komponente SRC/Komponenten/LinkPreviewer.vue.

In unserem <script> erhalten wir die Link -Vorschau -Daten, indem wir eine Anforderung an unsere serverlose Funktion senden und die Daten in Vorschaudata -Objekt speichern. Wir werden dies später in unserer Vorlage verwenden, um die Daten anzuzeigen: </script>

<span>npm uninstall tailwindcss postcss autoprefixer
</span><span>npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

In dem obigen Code erhalten wir das Targeturl als Requisite, der in unsere Komponente übergeben wird.

In der Setup () geben wir Requisiten als Argument über, damit wir auf Komponentenprops wie Targeturl zugreifen können.

Dann erstellen wir ein reaktives PeviewData -Objekt mit Ref: const previewData = ref ({}). In einer neuen Funktion von GeneratePreview () verwenden wir Fetch, um eine Postanforderung zu senden, die das Ziel an unsere serverlose Funktion enthält. Diese Funktion gibt die Antwort oder Null zurück, wenn ein Fehler auftritt.

Als nächstes verwenden wir die Funktion, bevor die Komponente montiert ist, den OnBeforeMount () -Haken. Wir übergeben eine asynchronisierte Funktion als Argument. Innerhalb der Funktion weisen wir der Funktion GeneratePreview () previewData.Value zu. Die Beschreibungen (Desc, Og, Twitter) werden dann aus der Eigenschaft Beschreibungen erhalten.

Um die Beschreibung zu erhalten, die in der Vorschau angezeigt wird, weisen wir Vorschau auf (Value.Description zu (Desc || og || Twitter || "). Auf diese Weise wird die erste Eigenschaft mit einem Wert der Beschreibung zugewiesen.

Tun Sie dies, um die Vorschaubaten in unserer Vorlage anzuzeigen:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Im obigen Code müssen wir die Zeichenfolge zusammen mit Daten wie dem Bildtyp und dem Codieren in das SRC- "" -attribut

übergeben, um unser Bild anzuzeigen.

Das ist für unsere LinkPreviewer.vue -Komponente. Lassen Sie es uns in Aktion sehen. In ./src/views/home.vue:

vue create link-previewer
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

In unserer Home.vue -Datei verwenden wir im Grunde genommen ein Abbrucharray von Links, um eine Liste von LinkPreviewer -Komponenten zu rendern, die wir an die Targeturl -Requisiten der Komponente übergeben.

Wir haben auch ein -Element, mit dem wir der Liste dynamisch mehr LinkPreviewer -Komponenten hinzufügen.

So sieht unsere einfache App jetzt aus.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

süß! Unsere App funktioniert. Seit wir lokal mit Netlify CLI ausgeführt haben, sehen wir sehen, wie wir mit der CLI für Netlify bereitstellen können.

Bereitstellen der App für netlify

Bevor wir unsere App zum Netlify bereitstellen, müssen wir unsere App für die Produktion erstellen:

Please pick a preset: Manually <span>select features
</span>? Check the features needed <span>for your project: Choose Vue version, Babel, PWA, Router, Vuex, Linter
</span>? Choose a version of Vue.js that you want to start the project with: <span>3.x
</span>? Use <span>history mode for router? (Requires proper server setup for index fallback in production) Yes
</span>? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Where <span>do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Auf diese Weise werden unsere App erstellt und ein Dist/ Ordner erstellt, den wir für die Produktion bereitstellen können.

Als nächstes müssen wir uns bei unserem Netlify -Konto anmelden:

<span>npm uninstall tailwindcss postcss autoprefixer
</span><span>npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies wird in Ihrem Browser in Ihr Netlify -Konto angemeldet.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Nach dem Genehmigung der Bewerbung können wir unser Projekt mit einer neuen Website verknüpfen. Netlify wird uns eine Reihe von Fragen stellen:

  • Was möchten Sie tun? Wählen Sie "Erstellen und Konfigurieren einer neuen Site".
  • Team? Wählen Sie .
  • Wählen Sie einen eindeutigen Site -Namen? Wählen Sie .
  • Bitte geben Sie ein Veröffentlichungsverzeichnis an (z. B. "öffentlich" oder "dist" oder "."). Geben Sie Dist.
  • ein

Danach lädt Netlify unsere Dateien hoch und bereitet sie auf unserer neuen Site bereit.

Bereitstellen mit GitHub

Alternativ können wir uns für die Bereitstellung unserer Website von GitHub entscheiden. Alles, was Sie tun müssen, ist, sich bei GitHub anzumelden, ein neues Repository zu erstellen und die URL in unser neu erstelltes Repo zu kopieren.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Wir führen dann den folgenden Befehl in unserem Projektordner aus:

<span>npm install -g @vue/cli
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Aufgrund von Authentifizierungsproblemen können Sie möglicherweise nicht von Ihrem Terminal von Ihrem Terminal auf Ihr Repo drücken, und Sie erhalten möglicherweise eine Nachricht von Git wie folgt: „Die Unterstützung der Kennwortauthentifizierung wurde am 13. August 2021 entfernt. Bitte verwenden Sie stattdessen ein persönliches Zugriffstoken. “ Dies bedeutet, dass Sie ein persönliches Zugriffs -Token (PAT) erstellen und sich zum Anmelden verwenden müssen. Gehen Sie dazu zu Github -Token -Einstellungen und generieren Sie ein neues Token. Wählen Sie alle gewünschten Berechtigungen aus. Stellen Sie sicher, dass Sie auf Repos zugreifen können. Kopieren Sie es nach dem Erstellen Ihres Pates und speichern Sie es irgendwo. Versuchen Sie dann den Hauptbefehl für Git Push -U -Ursprung und fügen Sie Ihre Pat in Ihre PAT ein, wenn Sie nach Ihrem Passwort gefragt werden.

Sobald wir das Projekt nach GitHub gedrückt haben, gehen Sie zu Netlify, um eine neue Site von Github zu erstellen.

Befolgen Sie die Schritte, um ein Repository auszuwählen und die Build -Einstellungen für Ihr Projekt einzugeben. Für unser VUE -Projekt ist der Befehl Build NPM -Auslauf Build, und das Bereitstellungsverzeichnis ist dist.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Klicken Sie anschließend auf die Website bereitgestellt.

netlify bereitet die Website bereit und wir können unsere Website in einer Vorschau auf den bereitgestellten Link zur Bereitstellung klicken. Wir können unsere Funktionen sehen, indem wir aus dem oberen Menü zu Funktionen gehen.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

Sie können eine Funktion auswählen, um weitere Details und Protokolle anzuzeigen.

Erstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen

süß!

Hier ist der Link zu der auf netlify bereitgestellten Demo: https://lnkpreviewr.netlify.app

Schlussfolgerung

Wir konnten serverlose Funktionen mit Netlify mithilfe von Netlify -Funktionen erstellen und bereitstellen. Wir haben auch gesehen, wie wir mit den Funktionen unseres Vue Front End interagieren können. Dieses Mal haben wir uns das Screenshot verwendet und Daten von anderen Websites abgerufen und eine Link -Vorschaukomponente damit erstellt, aber wir können so viel mehr tun. Mit serverlosen Funktionen können wir mehr am vorderen Ende tun, ohne einen Back-End-Server einzurichten zu müssen.

Weitere Lesen und Ressourcen

Hier sind einige Ressourcen und Inhalte, die ich nützlich fand, und ich denke, Sie werden auch:

  • Projekt GitHub Repo
  • Tutorials - Netlify -Funktionen
  • up mit serverlosen Funktionen - Jamstack Explorers (netlify.com)
  • Erste Schritte mit dem Puppenspieler Google Developers
  • So verwenden Sie Puppenspieler in einer Netlify-Aws-Lambda-Funktion
  • So verwenden Sie Puppenspieler, um Chrome in einer API mit netlify serverlosen Funktionen zu automatisieren - Space Jelly

häufig gestellte Fragen (FAQs) zu Puppenspieler und serverlosen Funktionen

Wie kann ich meinen Puppenspieler -Code in einer serverlosen Funktion debuggen? Sie können jedoch die Funktion „Console.log“ verwenden, um die Werte auszudrucken und die Ausführung Ihres Codes zu verfolgen. Sie können auch die Funktion "page.on (" console ", msg => console.log (msg.text ())") verwenden, um die gesamte Konsolenausgabe aus dem Browser zu protokollieren. Denken Sie daran, die Protokolle im Dashboard Ihres serverlosen Funktionsanbieters zu überprüfen. . Sie können Try-Catch-Blöcke verwenden, um Fehler zu behandeln. Im Fangblock können Sie die Fehlermeldung protokollieren und optional eine Antwort mit der Fehlermeldung senden. Auf diese Weise können Sie alle Probleme verfolgen und beheben. AWS Lambda, Google Cloud -Funktionen und Azure -Funktionen. Der Einrichtungsprozess kann jedoch je nach Anbieter variieren. Möglicherweise müssen Sie einen benutzerdefinierten Build von Puppenspielern wie Chrome-Aws-Lambda für AWS Lambda verwenden. In serverlosen Funktionen können Sie einige Strategien anwenden. Verwenden Sie zunächst die Browserinstanz über mehrere Einrufe hinweg. Zweitens verwenden Sie die Option "NetworkIdle0" Waituntil, um sicherzustellen, dass alle Netzwerkanforderungen abgeschlossen sind. Drittens deaktivieren Sie unnötige Funktionen in puppeteativähnlichen Bildern, CSS und Schriftarten, um die Seite zu beschleunigen. ist einfach. Sie können die Funktion „Seite.Screenshot ()“ verwenden, um einen Screenshot der aktuellen Seite zu erstellen. Sie können Optionen wie den Screenshot -Typ (JPEG oder PNG), die Qualität und die Hinsicht der vollständigen Seite oder nur das Ansichtsfenster angeben.

Kann ich Puppeteer verwenden, um die Formulareinreichung in serverlosen Funktionen zu automatisieren? Mit der Funktion "Seite.Type ()" können Sie die Eingabefelder und die Funktion „Seite.Click ()“ auf die Schaltflächen oder Links ausfüllen. Nach der Einreichung des Formulars können Sie PUPPETER verwenden, um die resultierende Seite zu navigieren und die benötigten Daten zu extrahieren. Dynamische Websites in serverlosen Funktionen, da sie JavaScript-generierte Inhalte rendern können. Sie können die Funktion „Seite.Valuate ()“ verwenden, um JavaScript -Code im Kontext der Seite auszuführen und die von Ihnen benötigten Daten zu extrahieren. 🎜>

Die Handhabung der Navigation und Seitenlötung mit Puppeteer in serverlosen Funktionen kann mit der Funktion „Seite. Diese Funktion wartet darauf, dass die Seite zu einer neuen URL oder einem neuen Reload navigiert. Sie können es in Verbindung mit der Funktion „Seite.click ()“ verwenden, um zu warten, bis die Seite navigiert, nachdem ich auf einen Link oder eine Schaltfläche geklickt habe. 🎜>

Ja, Sie können Puppenspieler verwenden, um Ihre Webanwendung in serverlosen Funktionen zu testen. Puppeteeder bietet eine hochrangige API für die Browserautomatisierung, die sich perfekt für End-to-End-Tests eignet. Sie können Benutzerinteraktionen simulieren, den resultierenden Seitenstatus überprüfen und sogar Screenshots machen, um das Verhalten Ihrer Anwendung visuell zu überprüfen. und Sitzungen mit Puppeter in serverlosen Funktionen können mit den Funktionen „Page.cookies ()“ und „Page.Setcookie ()“ durchgeführt werden. Sie können diese Funktionen verwenden, um Cookies zu erhalten, und einstellen. Dies ist nützlich, um eine Sitzung aufrechtzuerhalten oder das Verhalten Ihrer Anwendung mit verschiedenen Cookies zu testen.

Das obige ist der detaillierte Inhalt vonErstellen Sie einen Link -Vorschauer mit Puppeteer & serverloser Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage