Depois de instalar o Node (download), crie um diretório em sua máquina e inicie seu primeiro aplicativo.
$ MKDIR Hello-World
Neste diretório, você definirá o aplicativo "pacote", que não é diferente de qualquer outro pacote de nós. O arquivo json no diretório de arquivos define claramente uma dependência. Você pode usar o comando npm para obter a versão mais recente do Express, que você gosta de fazer, em vez de instalar uma versão diferente de "3.x" para evitar surpresas desconhecidas.
{"Nome": "Hello-World", "Descrição": "Hello World Test App", "Version": "0.0.1", "Private": True, "Dependências": {"Express": "3.x"}}}Agora, você tem um pacote. Neste diretório, você pode usar o NPM (1) para instalar essa dependência; nesse caso, você só precisa entrar:
$ npm install
Depois que o NPM terminar, você terá um Express 3.x depender no diretório /node_modules. Você pode verificar isso com o NPM LS, assim como a árvore expressa e suas próprias dependências mostradas no snippet de código a seguir.
$ npm [email protected] /private/tmp└─┬ [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ └── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ └── [email protected] └─┬ [email protected] └── [email protected]
Agora crie o próprio aplicativo! Crie um arquivo chamado App.js ou Server.js, independentemente de qual você gosta, introduza o Express e, em seguida, use Express () para criar um novo aplicativo:
var express = requer ('expresso'); var app = express ();Novas instâncias de aplicativo podem começar a definir rotas através do app.verb (); nesse caso, responder à solicitação "get/" através da string "Hello World". Req e Res são exatamente os mesmos objetos de nós fornecidos a você, para que você possa ligar para res.pipe (), req.on ('dados', retorno de chamada) e outras coisas que você faria que não têm nada a ver com o Express.
O Express aprimora esses objetos para fornecer interfaces de nível superior, como res.Send (), além de adicionar comprimento de conteúdo a você:
App.get ('/hello.txt', function (req, res) {res.send ('hello world');});Agora ligue para o método App.Listen () para que a conexão vinte e ouça, aceitando os mesmos parâmetros que a net.server #Listen ():
var Server = App.Listen (3000, function () {console.log ('Ouvindo na porta %d', server.address (). porta);});Use Express (1) para gerar o aplicativo
A equipe Express mantém um gerador de projeto conveniente chamado Express-Generator (1). Se você instalar o Express-Generator globalmente com o NPM, poderá acessá-lo de qualquer lugar do seu computador:
$ npm Install -g Express -Generator
Essa ferramenta fornece uma maneira fácil de obter uma estrutura de aplicativo, mas com escopo limitado, por exemplo, suporta apenas alguns mecanismos de modelo e se expressa realmente suporta a criação de qualquer modelo de estrutura do site para o Node. Você pode visualizá -lo por meio de ajuda:
Uso: Express [Opções] Opções: -h, - -Help Informações de uso de saída -V, - -Despertar o número da versão -e, --ejs Adicione o suporte do motor EJS (padrão para Jade) -H, -Hogan Adicionar hogan.js Suporte ao motor -C, -CSS Add Styles Support (menos | estilos |
Se você deseja gerar um aplicativo suportado em qualquer caso, você só precisa simplesmente executar ::
$ expresso -css MyApp/Views/Index.jadecreate: MyApp/Views/Layout.jadeInstall Dependências: $ CD MyApp && NPM InstallRun O aplicativo: $ Debug = MyApp Node App
Como qualquer outro aplicativo de nó, você deve instalar as seguintes dependências:
Então vamos começar.
$ NPM START
Isso é tudo o que você precisa para obter um aplicativo simples em funcionamento. Lembre -se de que o Express não está vinculado a nenhuma estrutura de diretório específica, estes são apenas um guia para você. A seleção da estrutura do aplicativo pode ser visualizada no repositório do GitHub.
Manuseio de erros
Definições de middleware de manuseio de erros são como middleware comum, mas 4 parâmetros devem ser definidos, que é a assinatura da função (err, req, res, a seguir):
App.use (function (err, req, res, próximo) {console.error (err.stack); res.send (500, 'algo quebrou!');});Embora o middleware de manuseio de erros forçado geralmente não seja definido no final, após outros app.use (), sua chamada se parece com a seguinte:
var BodyParser = requer ('Body-Parsser'); var methodOverRide = requer ('Method-override'); App.Use (BodyParser ()); App.use (MethodOverRide ()); App.Use (App.router);A resposta nesses middleware é completamente arbitrária. Você pode responder a uma página de erro HTML, uma mensagem simples, uma string json ou qualquer outra resposta que você quiser.
Para construir uma estrutura organizada e de nível superior, você pode definir vários desses middleware de manuseio de erros, assim como definir o middleware normal. Por exemplo, suponha que você queira definir um manipulador de erros para uma solicitação XHR, além disso, o que você pode fazer é o seguinte:
var BodyParser = requer ('Body-Parsser'); var methodOverRide = requer ('método-overrida'); App.Use (BodyParser ()); App.Use (MethodOverRide ()); App.Use (App.Router); App.Use (LogErrors); App.Use (ClientRorHandler); App.Use (ErrorHandler);Em Logerrors mais gerais, você pode escrever solicitações e mensagens de erro no Stderr, Loggly ou Serviços similares:
função logerrors (err, req, res, next) {console.error (err.stack); próximo (err);}A definição de ClientErrorHandler é mostrada abaixo, observe que esse erro será passado explicitamente para o próximo.
function clientErrorHandler (err, req, res, next) {if (req.xhr) {res.send (500, {error: 'algo explodiu!'}); } else {next (err); }}A seguinte implementação do ErrorHandler "Allound" pode ser definida como:
função errorHandler (err, req, res, next) {res.status (500); Res.render ('Error', {Error: err});}Contagem de usuário online
Esta seção explica um aplicativo (pequeno) em detalhes e usa o Redis para rastrear o número de usuários online. Primeiro crie um pacote. O arquivo JSON contém dois anexos, um para o cliente Redis e o outro para o próprio Express. Também verifique se você envolveu o Redis e execute o $ Redis-Server.
{"Nome": "App", "Version": "0.0.1", "Dependências": {"Express": "3.x", "Redis": "*"}}}Em seguida, você precisa criar um aplicativo e uma conexão com Redis:
var express = requer ('expresso'); var redis = requer ('redis'); var db = redis.createclient (); var app = express ();O próximo middleware rastreia usuários on -line. Aqui, usaremos o conjunto classificado para que possamos consultar usuários on -line da Redis, que leva apenas N milissegundos. Utilizamos registros de data e hora como o "padrão online" para os membros. Observe que aqui usamos a sequência agente do usuário em vez do ID de usuário usual.
App.use (function (req, res, o próximo) {var ua = req.headers ['user-agent']; db.zadd ('online', date.now (), ua, próximo);});O próximo middleware é usar o ZrevRangeByScore no último minuto para obter o número máximo de usuários on -line, sempre obtemos os usuários on -line mais recentes e seu limite superior é o registro de data e hora menos 60000 milissegundos.
App.use (function (req, res, próximo) {var min = 60 * 1000; var ago = date.now () - min; db.zrevrangeByScore ('online', '+inf', ago, function (err, usuários {if (err) retornar (err); req.online = users; next ();});Finalmente, o usamos através de um URL e o ligamos a uma porta! Isso é tudo, acessando este aplicativo em um novo navegador e você verá um aumento no número de pessoas on -line.
App.get ('/', function (req, res) {res.send (req.online.length + 'usuários online');}); app.listen (3000);Proxy reverso para expresso
O uso do expresso por trás do proxy reverso, como verniz ou nginx, é trivial, no entanto, requer configuração. Ao ativar o aplicativo "Trust Proxy" App.enable ("Trust Proxy"), o Express tem alguns truques para proxys reversos, os campos de cabeçalho X-forwarded-* podem ser confiáveis, caso contrário eles podem ser facilmente enganados.
Habilitar essa configuração tem alguns efeitos sutis. A primeira é que o X-forwarded-proto pode ser definido por proxy reverso, dizendo ao aplicativo que é HTTPS ou apenas um HTTP simples. Este valor é refletido pelo req.protocol.
A segunda alteração é que os valores req.ip e req.ips preencherão a lista de endereços X-forwarded.
Debug Express
O Express usa o módulo de depuração internamente para registrar informações sobre a correspondência de caminho e os padrões de aplicativos. Para ver esta mensagem, basta definir a variável de ambiente de depuração para expressar:*e, depois de iniciar o aplicativo, você verá as informações de depuração no console.
$ Debug = express:* node ./bin/www
Exemplo de Exemplo de Hello World Imprimirá o seguinte:
Express: inicialização do aplicativo no modo de desenvolvimento +0msexpress: roteador definido get /hello.txt +0msexpress: roteador get /hello.txt +1ms
Além disso, o programa gerado pelo Expression Executable (gerador) também usa um módulo de depuração, e o escopo padrão é o espaço para nome da depuração do My-Application.
Você pode ativar essas declarações de depuração com o seguinte comando
$ Debug = my-application node ./bin/www
Para obter mais informações sobre a depuração, consulte o Guia de depuração