Zum Abschluss unserer kleinen VS-Code-Reihe widmen wir uns noch einmal dem Thema, Azure App Services in VS Code bereitzustellen. Anstelle einer CI/CD-Bereitstellung gehen wir hier aber auf den direkten, quasi nativen Support für Azure Web Apps anhand eines konkreten Beispiels ein.
Ein einfacher Stichdatum-Countdown in Node.js.
(Bild: Drilling / Microsoft)
Was den Technologie-Stapel betrifft, haben wir uns für dieses Beispiel für Node.js entschieden, um in einer Webanwendung serverseitigen Code auszuführen zu können. Somit kann JavaScript für den gesamten Code der Webanwendung dienen, also sowohl auf dem Server als auch im Client-Browser. Da Node.js den gesamten Code asynchron ausführt, blockieren lange laufende Anfragen nicht das Ausführen anderer Aufgaben.
Zwar ist es möglich, allein mit Node.js eine komplette Web-App zu erstellen. Allerdings empfehlen wir auch hier das Verwenden von Frameworks wie „Express.js“, um schnell, mit minimalem benutzerdefinierten Code einen Node.js-Webserver erstellen zu können. Express.js stellt bereits Funktionen zur Verfügung, mit deren Hilfe sich HTTP-Anfragen wie GET-, POST- und DELETE einfach abfangen und an Code weiterleiten lassen, der dann die Antworten formuliert.
Gleichzeitig implementiert Express.js einen HTTP-Server auf dem lokalen Rechner, damit man lokalen Code schnell und einfach testen kann. Ein leicht portierbares Hello-World -Beispiel in Express.js sieht folgendermaßen aus:
var express = require('express'); var app = express();app.get('/', (req, res) => res.send('Hello World!'));app.listen(3000);
Das Dienstprogramm „Express Generator“ erleichtert den Einstieg zum Erstellen einer neuen App, indem Sie „npx“ nutzen. Npx ist ein package runner, der das Verwenden von Paketen aus der npm-Registrierung vereinfacht.
Genau wie „npm“ an sich die Installation und Verwaltung von in der Registrierung gehosteten Abhängigkeiten vereinfacht, erleichtert „npx“ die Verwendung von CLI-Tools und anderen gehosteten ausführbaren Dateien in der Registrierung. Summa summarum vereinfacht npx eine Reihe von Dingen erheblich, die mit einfachem npm einen erheblich höheren Aufwand verursachen würden.
npx express-generator --pug –css
Dieses Beispiel umfasst sowohl die Pug-Templating-Engine als auch Unterstützung für CSS-Stylesheets. Sobald der Generator abgeschlossen ist, finden Sie einen Standardsatz von Dateien in Ihrer Webanwendung, einschließlich „Views“, „Routen“, „Stylesheets“ und dem Einstiegspunkt „app.js“.
Web App mit VS Code, Express und Node.Js
Mit Node.js und Express.js lassen sich Webanwendungen also sehr schnell erstellen, etwa für einen schnellen Proof-of-Concept. Dieser soll in unserem (an ein MS-Learn-Beispiel angelehntes) hypothetischen Szenario eine Marketing-Kampagne zu einer Produkteinführung begleiten und dazu einen Countdown bis zum Startdatum auf einer Website anzeigen.
Voraussetzung dafür ist, dass auf dem Rechner neben VS Code auch Node.js installiert ist. Alle im Folgenden besprochenen Befehle lassen sich direkt in Visual Studio ausführen. Der gesamte Code der Webanwendung wird ebenfalls in VS Code bearbeitet. Wir nutzen das integrierte Terminal, um einen Ordner mit installiertem Express.js einzurichten:
mkdir ExpressAppCountdown cd ExpressAppCountdown
In einem neuen Workspace öffnen wir den erstellten Ordner mit „Open Folder“ und nutzen den Express Generator, um alle Komponenten einer Express.js-Boiler-Plate-Webanwendung zu erstellen. Aber Achtung: Im Visual Studio Code Explorer-Fenster ist der Ordner „ExpressAppCountdowm“ zunächst leer. Es folgt die Eingabe:
npx express-generator
Im Explorer-Fensters oben links finden sich die vom Generator erstellten Dateien.
Der Express Generator vereinfacht das schnelle Erstellen eine Node-basierten Webanwendung.
(Bild: Drilling / Microsoft)
Wir verfügen nun über eine funktionsfähige Webanwendung, die Node.js ausführen kann. Nun gilt es noch, den Code zu ändern, um den gewünschten Countdown anzuzeigen. Hierfür erweitern wir im Explorer-Fenster von VS Code den Abschnitt „Routen“, um zur Datei „index.js“ zu navigieren. Diese JavaScript-Datei definiert Routen für die Homepage der App.
An dieser Stelle ist es möglich, den Code um die Berechnung des Countdowns zu erweitern. Wir fügen den folgenden Beispiel-Code direkt nach der Variable „router = express.Router();“ ein. In der ersten Zeile des eingefügten Codes gilt es, das imaginäre Produkt-Release-Datum im Format MM/TT/JJJJ HH:MM anzugeben.
let launchTime = new Date("08/01/2023 11:00").getTime();
Nun suchen wir die Code-Zeile …
res.render('index', { title: 'Express' });
… und ersetzen diese komplett durch folgenden Codezeilen:
let currentTime = new Date().getTime(); let numberOfMilliseconds = parseInt(launchTime - currentTime); res.render('index', { title: 'Countdown to Launch', countDown: numberOfMilliseconds });
Ein einfacher Stichdatum-Countdown in Node.js.
(Bild: Drilling / Microsoft)
Das Ergebnis sollte so aussehen, wie im vorangestellten Bild. Nun ändern wir die Standard-Homepage für die Webanwendung, damit der Countdown auch angezeigt wird. Hierfür navigieren wir im Explorer im Knoten „Views“ zur Datei „index.jade“, die eine „Ansicht“ (View) für die Startseite der Webanwendung definiert. Hier suchen wir nach der Zeile …
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
p Welcome to #{title}
…, ersetzen diese durch …
p Nur noch wenige Tage bis zu Veröffentlichung!
… und fügen am Ende noch die folgende Zeile ein:
p Countdown: #{countDown} milliseconds
Eine View für unsere Webanwendung zur Anzeige eines Countdown.
(Bild: Drilling / Microsoft)
Die Webanwendung ist jetzt vollständig und kann nun auf dem lokalen PC getestet werden. Allerdings ist die vom Express-Generator erstellte Web-App von verschiedenen anderen Node.js-Paketen abhängig. Es gilt also zunächst sicherzustellen, dass diese vor dem Ausführen der Web-App installiert werden. Wir installieren daher die Web-App mittels …
npm install
… und führen diese anschließend aus:
npm start
Ein lokaler Test der Node.js-Web-App.
(Bild: Drilling / Microsoft)
Der Befehl weist „npm“ an, die Eigenschaft „scripts.start“ des Pakets auszuführen. Festgelegt wird diese vom Express-Generator, damit node.js im Ordner „/bin/www“ gestartet wird und die Webanwendung lokal ausführt. Das Ergebnis findet sich mit http://localhost:3000 im Browser.
Webanwendung in Azure App Service veröffentlichen
Neben der Azure-VS-Code-Extension benötigen wir noch die Erweiterung für Azure App Service.
(Bild: Drilling / Microsoft)
Nun ist es möglich, die lokale Web App aus Visual Studio Code auf dem Azure App Service zu veröffentlichen. Hierfür wird zunächst die im Screenshot gezeigte Extension „Azure App Service“ benötigt. Diese Erweiterung stellt ein zusätzliches Explorer-Fenster bereit, das alle Web-Apps im eigenen Abonnement anzeigt.
Direkt aus diesem Explorer-Fenster heraus lassen sich verschiedene Aktionen ausführen. Wir können die App beispielsweise mit einer Backend-Datenbank verbinden, im CI/CD-Kontext ein GitHub-Deployment einrichten, einen Bereitstellungsslots erstellen oder neue Anwendungseinstellungen definieren. Es ist aber freilich auch möglich, neue Web Apps direkt aus VS Code heraus zu erstellen und dabei den Quellcode direkt von der lokalen Festplatte aus nach Azure zu deployen.
Bereitstellen einer Azure App Services-App aus VS Code mit Hilfe der passenden Extension.
(Bild: Drilling / Microsoft)
Wie schon in anderen Artikel gezeigt, lässt sich eine Webanwendung auch via Git, Github, Gitbucket oder manuell mittels FTPS bzw. aus Azure Devops heraus bereitstellen. Noch einfacher und schneller funktioniert es dagegen mit der App-Service-Erweiterung. Hierfür ist es nur notwendig, im VS-Code-Explorer eine Verbindung mit dem gewünschten Azure-Abonnement herstellen, um sich anzumelden.
Die gewünschte Runtime für unsere Web App.
(Bild: Drilling / Microsoft)
Anschließend lässt sich eine neue App als App Service in Azure bereitstellen. Wir navigieren dazu im Azure-Explorer zu „App Services“, klicken auf das Plus-Symbol und wählen „Create App Service Web App“. Bei „Create new web app (1/3)“ vergeben wir einen global eindeutigen Namen für die Webanwendung und drücken Enter, wählen dann bei „Create new web app (2/3)“ die gewünschte Laufzeitumgebung aus, hier „Node 18 LS“ …
Die Web App braucht noch einen passenden Service-Plan.
(Bild: Drilling / Microsoft)
… und wählen im dritten Schritt dann die Preisstufe, was sich dann unmittelbar auf den automatisch erstellen App Service Plan (ASP) auswirkt. Markieren Sie dann die App im Knoten „App Services“ und wählen im Kontextmenü den Eintrag „In Web-App bereitstellen“, um Ihren individuellen Countdown-App-Code zu veröffentlichen, wozu Sie in VS Code das Quellcode-Verzeichnis angeben. Diesen und die folgenden Schritte haben wir in der Bildergalerie festgehalten.