Ottobre 2015

Volume 30 Numero 10

Il presente articolo è stato tradotto automaticamente.

Il lavoro programmatore - come essere media: installazione rapida

Da Ted Neward | Ottobre 2015

MongoDB Express, AngularJS, stack di Node. js (Media) è un'alternativa "stack Web" (alcuni complementari, altri pronunciare supplementari) allo stack di ASP.NET per .NET gli sviluppatori sono abituati. Questo articolo contrassegna il terzo della serie in cui si parlerà la libreria di Express che gestisce HTTP nel server di elaborazione.

Il numero precedente (msdn.microsoft.com/magazine/mt422588), ho illustrato come installare un'applicazione Node. js in Microsoft Azure. Poiché questo è essenzialmente è sufficiente eseguire il commit di un archivio Git (e quindi inserendo i commit nell'archivio remoto Azure), lascio le out in questa e le colonne future, almeno fino a quando non iniziare a comunicare con altri servizi (ad esempio MongoDB) sulla piattaforma Azure. In alternativa, è possibile eseguire tutti gli esempi sui computer locali per proseguire. Azure non è certamente necessario (o almeno non fino a quando non inizia a parlare di push in produzione).

Ottenere sul Express

Treno tutti puns riservato, Express è una libreria piuttosto semplice. È facile da utilizzare, una volta che si adottano "la modalità di Node. js." Per mantenere la luce carico conoscitivo, per iniziare da zero (in termini). Cosa presupporrò che si dispone di un nuovo sito di Azure (i risultati di una corretta "sito di azure creare-git" comando) e un'applicazione Express semplice esecuzione.

Nella prima dispensa (msdn.microsoft.com/magazine/mt185576), ho accennato npm, la gestione di pacchetti di nodi. Questo è il manager di libreria e dipendenze per tutte le applicazioni di nodo. È simile a ruolo NuGet nel mondo Microsoft .NET Framework. Entrambi sono ispirati da Ruby gemme, in modo che condividono le stesse caratteristiche diverse.

Ebbene, per tutte le informazioni di npm dipende da un file JSON che contiene tutte le dipendenze, produzione e pacchetti di sviluppo, in un unico file denominato package. JSON. Pertanto è il primo passo logico per creare il file con Express come una dipendenza, come illustrato nella Figura 1.

Figura 1 crea un File con Express come una dipendenza

{
  "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": {
  }
}

Il contenuto di questo file non richiedono spiegazione, ma vi sono alcune cose vale la pena sottolineare. In primo luogo, è spesso manterrebbe questo file manualmente (anche se sono disponibili alcuni strumenti che verranno gestiti automaticamente). Che è in linea con la mentalità delle versioni passate "editor di testo e della riga di comando" del mondo Node. js. Di conseguenza, gli sviluppatori si tratta di nodo devono essere sanno come modificare manualmente, indipendentemente dalla disponibilità di tutti gli strumenti. In secondo luogo, esistono due set di dipendenze di seguito. Le dipendenze sono i pacchetti che npm deve installare in un ambiente di produzione. Il devDependencies sono utilizzati solamente dagli sviluppatori di pacchetti.

Per ora, il modo più semplice pensare ciò è dipendenze verranno installate quando l'applicazione viene inserito (tramite Git) in Azure. Il devDependencies installate (con il contenuto di dipendenze) quando l'installazione di pacchetti in un computer portatile per sviluppatori, come illustrato nella Figura 2

Installare le dipendenze
Figura 2 installazione delle dipendenze

Proposito, è necessario farlo ora. Con solo il file package. JSON nella directory corrente, immettere "npm install" al pull di npm della riga di comando ed espressioni di controllo verso il basso express, lodash (una libreria pratica di funzioni e metodi, inclusi alcuni strumenti funzionale come mappa e filtro, nonché le estensioni a matrici e oggetti) e servire statico (che verrà illustrato più avanti) nel computer locale.

Ad esempio NuGet, npm installa non solo il pacchetto, ma tutte le relative dipendenze, nonché. Questo è ciò che causa la visualizzazione ad albero in terminale. Per i pacchetti di ombrello di grandi dimensioni che includono un numero elevato di pacchetti diffusi, questa visualizzazione può diventare piuttosto lunga. Npm strumento anche note che tralasciato due voci nel mio package. JSON: il campo archivio da cui proviene il pacchetto e i dati del file Leggimi. Questi vengono utilizzati principalmente per i pacchetti npm installati nella libreria npm centrale. Non trovo li particolarmente appropriato per un'applicazione, ma non è certamente causa problemi che se si preferisce attività npm senza avviso.

Con questa serie continua, aggiungerò pacchetti aggiuntivi di package. JSON, è consigliabile eseguire periodicamente "npm install" per ottenere i nuovi pacchetti. In realtà, si noti nella struttura di output di installazione per le edizioni express, il pacchetto di debug (che ho utilizzato il numero precedente) è una dipendenza, ma non l'ho nel file package. JSON direttamente. È stato il manuale dell'utente che il file package. JSON in modo esplicito deve essere elencate tutte le dipendenze di che utilizzare direttamente (in contrapposizione a quelli utilizzati dalle librerie, ma mai chiamato direttamente), faccio e aggiungerlo al package. JSON, quindi effettuare un altro "npm install":

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

In questo modo è possibile sapere quale versione di debug effettivamente utilizzo (come contrari alla versione Express utilizza), nel caso tale differenza diventa importante. L'altro, il metodo tradizionale per installare una libreria (ora che avete appreso come presenta il formato di file) consiste nell'utilizzare "installazione di npm < pacchetto > - Salva". Utilizzo di "-Salva" argomento causa npm modificare il file package. JSON (e non solo l'installazione senza record).

Infatti, se esegue un npm "npm install express - salvataggio," verrà aggiornare la voce express alla versione più recente (che in questo modo, è 4.13.3), anche se è già presente. Non esiste ancora un terzo metodo utilizzando un altro pacchetto denominato yeoman eseguire lo scaffolding di un'applicazione Express, ma parte dell'obiettivo qui consiste nel comprendere tutte le parti in movimento in Media, in modo che sarà trattato per un momento successivo.

Salve, Express

Una volta installati i bit di Express, è sufficiente scrivere l'universale "hello world" in Express. In un file denominato app. js (perché questo è il package. JSON ha come voce per "main"), il codice in Figura 3 fornisce l'omaggio semplice ancora necessario per l'informatica di dèi.

Figura 3, il codice per il rapido di Hello World

// 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);
});

Le prime due righe sono le chiamate richiedono che si è visto nella dispensa precedente, ovvero come Node. js i moduli vengono caricati al momento. Verrà modificato in 6 ECMAScript, una volta che è ratificati e spedito. Questi consentono di accedere di Express e il debug dei pacchetti, rispettivamente. Il modulo Express recuperato da richiedono è effettivamente una funzione che, quando viene chiamato, restituisce l'app Express stesso, di conseguenza, vengono poste in app (per convenzione).

La riga successiva è ciò che Express definisce una route. È simile per molti aspetti alle tabelle di routing più comuni in ASP.NET e ASP.NET MVC di recente. Esegue il mapping un verbo della richiesta (get) con un percorso URL relativo ("/" in questo caso) a una funzione. In questo caso, è una funzione anonima letterale che risponde con "Hello World". Si noti che la funzione utilizza anche l'oggetto debug per spew un rapido riga dopo la ricezione di una richiesta.

Infine, il codice controlla l'ambiente corrente per verificare se esiste una variabile di ambiente di porta specificato (quali ci sarà in Azure). In caso contrario, assegna alla porta 3000. Quindi l'oggetto app detto per restare in attesa, ovvero una chiamata di blocco. Verrà eseguito la funzione anonima letterale passata quando avvia l'ascolto. Il processo verrà semplicemente attendere una richiesta in ingresso. Supponendo che la richiesta è per "", risponde con "Hello World".

Debug, Express e si

Come accennato nella dispensa precedente, l'output di debug non viene visualizzato solo se la variabile di ambiente di DEBUG è impostata sulla stessa stringa utilizzata nel passaggio richiesto. In questo caso, che è app. Express anche debug utilizza, e se DEBUG è impostata su "*," tutti i risultati della diagnostica Express verrà inoltre visualizzato. È probabile che un po' troppo voluminosa da utilizzare per il debug su base regolare, ma può essere utile visualizzare si scorrono le radici di utilizzo di Express. Che consente di avere un'idea delle varie parti e ciò che viene richiamato quando. Un esempio dell'output (con alcune richieste) nella Figura 4.

Express con la registrazione di Debug
Figura 4 Express con la registrazione di Debug

Per attivare il debug disattivato, è sufficiente impostare DEBUG su nothing. Per visualizzare più di un debug flusso, ma non tutte, semplicemente-separato da virgole di nomi:

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

Comando verrà visualizzate solo output di tre debug flussi.

Avvolgendo

In molti modi, Express è molto simile a ASP.NET. Che vale non solo la modalità di gestione del traffico HTTP, ma come costituisce una sorta di "hub centrale" intorno alla quale decine (se non centinaia) di altri pacchetti dipendenza ed estende. Il pacchetto "serve static", ad esempio, consente un'app Express preesistente di offrire una directory per risorse statiche (vale a dire "non in esecuzione sul lato server"), quali immagini e i tipi di carattere. Nella prossima puntata, inizierò esaminando come utilizzare gli oggetti di richiesta e risposta di Express. (Se non è possibile attendere, consultare la documentazione di Express all'indirizzo expressjs.com.) In... la meantime buona codifica!


Ted Newardè CTO iTrellis, una società di servizi di consulenza. Egli ha scritto oltre 100 articoli e creati o coautore di numerosi libri, tra cui "Professional F # 2.0" (Wrox, 2010). È un MVP di F # e come relatore a conferenze in tutto il mondo. Fornisce consulenze e mentors regolarmente, contattarlo all'indirizzo ted@tedneward.com o ted@itrellis.com se si è interessati.

Grazie all'esperto tecnica seguente per la revisione di questo articolo: Shawn Wildermuth
Shawn Wildermuth è un MVP ASP.NET (/, ora di termine di tredici Microsoft IIS), l'autore di otto libri e decine di articoli sullo sviluppo di software e autore di Pluralsight con oltre 15 corsi per il proprio nome. È una delle menti Wilder (http://wilderminds.com) ed è possibile contattarlo sul suo blog al http://wildermuth.com.