Oktober 2015

Band 30, Nummer 10

Dieser Artikel wurde maschinell übersetzt.

Die arbeiten Programmierer - wie mittlere zu sein: Express-Installation

Durch Ted Neward | Oktober 2015

Die MongoDB, Express, AngularJS, Stack Node.js (Mittel) ist eine Alternative "Web Stack" (manche sagen ergänzen, andere sagen, ergänzende) an den ASP.NET-Stapel zu welcher .NET Entwickler daran gewöhnt sind. Diese Ausgabe markiert die dritte in der Reihe, in denen ich die Express Library, die HTTP erläutern werde-Verarbeitung auf dem Server behandelt.

In der letzten Ausgabe (msdn.microsoft.com/magazine/mt422588), habe ich gezeigt, wie Sie Node.js-Anwendung in Microsoft Azure installieren. Da dies im Grunde nur zu einem Git-Repository (und betätigen dann diese Commits in Azure remote-Repository) ist, ich lasse die Out in diesem und zukünftige Spalten mindestens bis ich sprechen mit anderen Diensten (z. B. MongoDB) auf der Azure-Plattform. Alternativ können Sie alle Beispiele auf lokalen Computern ausführen, um folgen zu können. Azure ist sicherlich nicht erforderlich (zumindest nicht, bis ich Gespräch auf Produktion).

Für die schnelle Abrufen

Alle Zug maßlos reserviert, Express ist eine ziemlich einfach. Es ist leicht zu integrieren, sobald Sie embrace "the Way Node.js." Um das Licht kognitive Last zu halten, starte ich völlig (relativ betrachtet). Ich gehe davon aus, Sie haben eine völlig neue Azure-Website (die Ergebnisse einer erfolgreichen "Azure-Website zu erstellen – Git" Befehl) und einer einfachen Express-Anwendung einsatzbereit.

In diesem ersten Teil (msdn.microsoft.com/magazine/mt185576), Npm, den Node Package Manager erwähnt. Dies ist der Bibliothek und die Abhängigkeit-Manager für alle Knoten Applications. Dies entspricht der Rolle, die NuGet in die Welt von Microsoft .NET Framework spielt. Tatsächlich wurden sowohl von Ruby Gems inspiriert, damit sie eine Anzahl von dieselben Merkmale aufweisen.

Wie sich für alle Informationen, herausstellt hängt Npm einer JSON-Datei, die alle Abhängigkeiten enthält – Produktion und Entwicklung nur Pakete – auf eine einzelne Datei namens package.json. Daher ist ein logischer erster Schritt zum Erstellen der Datei mit Express als Abhängigkeit, siehe Abbildung 1.

Abbildung 1 erstellen Sie eine Datei mit Express als Abhängigkeit

{
  "name": "MSDN-MEAN",
  "version": "0.0.1",
  "description": "Testing out building a MEAN app from scratch",
  "main": "app.js",
  "scripts": {},
  "author": "Ted Neward",
  "license": "ISC",
  "dependencies": {
    "express": "^4.9.8",
    "lodash": "^2.4.1",
    "serve-static": "^1.7.0"
  },
  "devDependencies": {
  }
}

Der Inhalt dieser Datei sind überwiegend selbsterklärend, doch sind einige Punkte hingewiesen werden. Zunächst würden Sie oft diese Datei manuell verwalten (obwohl es einige Tools, die für Sie verwaltet werden gibt). Das ist bei der Mentalität "Text-Editor und über die Befehlszeile" der Node.js-Welt. Daher sollte vermeintliche Knoten Entwickler während der Bearbeitung von hand, unabhängig von der Verfügbarkeit des Tools. Zweitens stehen zwei Sätze von Abhängigkeiten hier. Die Abhängigkeiten sind die Pakete, die in einer Umgebung mit Produktions-Typ Npm installiert werden soll. Die DevDependencies sind die Pakete, die nur von Entwicklern verwendet.

Im Moment ist am einfachsten zu kümmern Abhängigkeiten installiert werden, wenn die Anwendung in Azure (über Git) verschoben werden. Der DevDependencies (zusammen mit den Inhalt der Abhängigkeiten) installiert sind beim Installieren von Paketen auf einem Laptop Developer, siehe Abbildung 2

Installieren Sie die Abhängigkeiten
Abbildung 2 Installieren Ihrer Abhängigkeiten

Davon sprechen, sollten Sie dies jetzt tun. Nur die package.json-Datei im aktuellen Verzeichnis, geben Sie "Npm install" an der Befehlszeile "und" überwachen "Npm Pull unten express Lodash (eine nützliche Bibliothek von Funktionen und Methoden, einschließlich einige funktionale Tools wie Map und Filter sowie Erweiterungen für Arrays und Objekte) und Serve statische (das ich später eingehen werde) auf dem lokalen Computer.

Installiert den wie NuGet nicht nur das Paket jedoch alle abhängigen Elemente, sowie Npm. Dies ist die Ursachen der Strukturanzeige in der Terminaldienste. Für große Schirm-Pakete, die eine große Anzahl von beliebte Pakete zu integrieren, kann diese Anzeige sehr lang werden. Npm tool auch Notizen, die ich in meiner package.json zwei Einträge ausgelassen haben: Feld Repository, in dem dieses Paket stammt, und die Daten der Readme-Datei. Diese werden hauptsächlich für Npm-Pakete installiert, die in der zentralen Npm-Bibliothek verwendet. Ich nicht fündig besonders geeignet für eine Anwendung, aber sicherlich nicht Schaden würden diese Warnung weniger Npm-Aktivität auf Wunsch vorhanden ist.

Im Laufe dieser Serie füge ich zusätzliche Pakete package.json, damit Sie in regelmäßigen Abständen ausgeführt werden soll "Npm installieren" auf die neuen Pakete abrufen. Der Tat Beachten Sie in der Struktur des Install-Ausgabe für schnelle, das debugpaket (die ich in der letzten Ausgabe verwendet) eine Abhängigkeit ist allerdings habe ich es direkt in der Datei package.json eingefügt. Wurde mein Gewohnheit, die Datei package.json explizit alle Abhängigkeiten direkt (und nicht die von den Bibliotheken verwendet auflisten sollten, jedoch nie direkt aufgerufen) verwendeten, also klicke und package.json hinzugefügt und führen Sie eine andere "Npm install":

"dependencies": {
  "debug": "^2.2.0",
  "express": "^4.9.8",
  "lodash": "^2.4.1",
  "serve-static": "^1.7.0"
},

Auf diese Weise an, welche Version von Debug ich tatsächlich (im Unterschied zu Version, Express verwendet wird), verwende ich weiß, im Fall wird dieser Unterschied wichtig. Übrigens ist eine Möglichkeit, eine Bibliothek zu installieren (jetzt wissen Sie, wie das Dateiformat aussieht) verwenden "Npm Install < Paket--> Speichern". Mithilfe der "--Speichern" Argument bewirkt, dass Npm zum Ändern der Datei "package.json" (und nicht nur Installation ohne Eintrag).

In der Tat in diesem Fall wird ein Npm "Npm install Express – speichern" aktualisieren den express-Eintrag auf die neueste Version (die zum Zeitpunkt dieses Artikels 4.13.3 ist), obwohl er bereits vorhanden ist. Gibt es noch eine dritte Möglichkeit, ein anderes Paket mit Yeoman auf das Gerüst, einer Express-Anwendung aufgerufen, aber gehört das Ziel ist hier die beweglichen Teile in Mittelwert, verstehen, damit ich, die für die spätere lassen.

Hallo, Express

Nach der Installation der Express-Bits ist lediglich das weit verbreitete schreiben "Hello World" in Express. In einer Datei namens "App.js", (da ist was package.json als Eintrag für "Main" hat), den Code in Abbildung 3 bietet die einfache noch Bedarf Homage Götter Informatik.

Abbildung 3: des Codes für das Hello World-Express

// Load modules
var express = require('express');
var debug = require('debug')('app');
// Create express instance
var app = express();
// Set up a simple route
app.get('/', function (req, res) {
  debug("/ requested");
  res.send('Hello World!');
});
// Start the server
var port = process.env.PORT || 3000;
debug("We picked up",port,"for the port");
var server = app.listen(port, function () {
  var host = server.address().address;
  var port = server.address().port;
  console.log('Example app listening at http://%s:%s', host, port);
});

Die ersten beiden Zeilen werden die erforderlichen Aufrufe gesehen in der letzten Ausgabe, also wie Node.js Module im Moment lädt. Dies ändert ECMAScript-6, sobald, ratifiziert und geliefert. Diese ermöglichen den Zugriff auf die schnelle und Pakete, bzw. Debuggen. Das Express-Modul abgerufen werden, indem Sie erforderlich sind, ist tatsächlich eine Funktion, die bei der aufgerufen wird, liefert die Express-Anwendung selbst – also alles in der app (gemäß der Konvention).

Die nächste Zeile ist, was Express eine Route bezeichnet. Dies entspricht der späten in vielerlei Hinsicht in den Routingtabellen beliebter in ASP.NET und ASP.NET MVC. Zugeordnet ein Anfrage-Verb (Get) mit einem relativen URL-Pfad ("/" in diesem Fall) eine Funktion. In diesem Fall ist es eine anonyme Funktion literal, die antwortet mit "Hello World". Beachten Sie, dass die Funktion auch das Debug-Objekt verwendet, um eine kurze Zeile spew nach dem Empfang einer Anforderung.

Schließlich werden in die aktuelle Umgebung, um festzustellen, ob eine PORT-Umgebungsvariable angegeben werden (die in Azure sein wird) im Code wird überprüft. Wenn dies nicht der Fall ist, wird Port 3000 zugewiesen. Anschließend wird das app-Objekt angewiesen, lauschen, ist ein blockierender Aufruf. Führt die anonyme Funktion literal im übergeben, wenn sie die Überwachung beginnt. Der Prozess wartet dann nur für eine eingehende Anforderung. Vorausgesetzt, die Anforderung ist für "/" Clientabfrage mit "Hello World".

Debuggen, Express und Sie

Wie im vorherigen Artikel bereits erwähnt, wird die Debugausgabe angezeigt, wenn die DEBUG-Umgebungsvariable, auf die gleiche Zeichenfolge verwendet, die im Schritt erforderlich festgelegt ist. In diesem Fall ist, die app. Express auch Debuggen verwendet, und wenn DEBUGGEN auf "*," und dann die gesamte Express diagnostische Ausgabe auch angezeigt werden. Es ist wahrscheinlich ein wenig zu umfangreichen für Debuggen in regelmäßigen Abständen, aber es kann hilfreich sein, den frühen Tagen des arbeiten mit Express durch einen Bildlauf angezeigt. Hilft, die Sie erhalten einen Eindruck von den verschiedenen Teilen und was wird aufgerufen, wenn. Es ist ein Beispiel für die Ausgabe (mit wenigen Anfragen) in Abbildung 4.

Express mit der Debug-Protokollierung
Abbildung 4 Express mit der Debug-Protokollierung

Um die Debugoption deaktivieren, können Sie DEBUG einfach auf nothing festgelegt. Zum Anzeigen debug-mehr als ein Datenstrom, jedoch nicht alle von ihnen einfach durch Kommas getrennte Namen:

DEBUG=app,express:router,express:router:layer

Dieser Befehl zeigt nur die Ausgabe dieser drei Debug-Streams.

Nachbereitung

In vielerlei Hinsicht ähnelt Express viel ASP.NET. Dies ist nicht nur in der Behandlung der HTTP-Verkehr, aber wie sie dient als eine Art "zentralen Hub" Dutzende (wenn nicht gar Hunderte) von anderen Paketen, die abhängig sind und zu erweitern. Das Paket "Serve Static" ermöglicht beispielsweise einer Express-app vorgefertigte dienen Sie ein Verzeichnis für statische (d. h. "nicht ausführen auf dem Server") Objekte wie Bilder und Schriftarten. In der nächsten Folge beginne ich anzusehen, wie die Express-Anforderung und Antwort-Objekte verwenden. (Wenn Sie nicht warten können, sehen Sie sich die Express-Dokumentation unter expressjs.com.) In der Zwischenzeit... viel Spaß beim Programmieren!


Ted Newardist CTO bei iTrellis, einer Beratungsfirma. Er verfügt über mehr als 100 Artikel geschrieben und verfasst oder Mitautor ein Dutzend Bücher, darunter "Professional f# 2.0" (Wrox 2010). Er ist ein F#-MVP und spricht auf Konferenzen in der ganzen Welt. Er berät und hilft regelmäßig. Bei Interesse erreichen Sie Ihn unter ted@tedneward.com oder ted@itrellis.com.

Dank den folgenden technischen Experten für die Überprüfung dieses Artikels: Shawn Wildermuth
Shawn Wildermuth ist eine dreizehn Mal Microsoft MVP (ASP.NET/IIS-Schnittstellen), der Verfasser von acht Büchern und Dutzende von Artikeln zur Softwareentwicklung und Pluralsight-Autor mit mehr als 15 Kursen auf seinen Namen. Er ist einer Gedanken-und Erfahrungsaustausch Wilder (http://wilderminds.com) und erreichen Sie unter seinen Blog unter http://wildermuth.com.