Apesar de conhecer bem o JavaScript, estou confuso com o que exatamente esses três projetos no ecossistema Node.js. É algo como o Rails 'Rack? Alguém pode me explicar?
node.js
middleware
tillda
fonte
fonte
Respostas:
[ Atualização: Desde a versão 4.0, o Express não usa mais o Connect. No entanto, o Express ainda é compatível com o middleware criado para o Connect. Minha resposta original está abaixo.]
Fico feliz que você tenha perguntado sobre isso, porque é definitivamente um ponto de confusão comum para as pessoas que olham para o Node.js. Aqui está minha melhor chance de explicar isso:
O próprio Node.js oferece um módulo http , cujo
createServer
método retorna um objeto que você pode usar para responder a solicitações HTTP. Esse objeto herda ohttp.Server
protótipo.O Connect também oferece um
createServer
método, que retorna um objeto que herda uma versão estendida dohttp.Server
. As extensões do Connect existem principalmente para facilitar a conexão middleware . É por isso que o Connect se descreve como uma "estrutura de middleware" e é frequentemente analogizado ao Ruby's Rack.O Express faz para conectar o que o Connect faz ao módulo http: oferece um
createServer
método que estende oServer
protótipo do Connect . Portanto, toda a funcionalidade do Connect está lá, além de exibir renderização e uma DSL útil para descrever rotas. Ruby Sinatra é uma boa analogia.Existem outras estruturas que vão ainda mais longe e estendem o Express! Zappa , por exemplo, que integra suporte para CoffeeScript, jQuery do lado do servidor e testes.
Aqui está um exemplo concreto do que se entende por "middleware": pronto para uso, nenhuma das opções acima serve para arquivos estáticos. Mas basta jogar
connect.static
(um middleware que vem com o Connect), configurado para apontar para um diretório, e seu servidor fornecerá acesso aos arquivos nesse diretório. Observe que o Express também fornece os middlewares do Connect;express.static
é o mesmo queconnect.static
. (Ambos eram conhecidos comostaticProvider
até recentemente.)Minha impressão é que a maioria dos aplicativos "reais" do Node.js. está sendo desenvolvida com o Express atualmente. os recursos adicionados são extremamente úteis e todas as funcionalidades de nível inferior ainda estão lá, se você desejar.
fonte
A resposta aceita é realmente antiga (e agora errada). Aqui estão as informações (com fonte) baseadas na versão atual do Connect (3.0) / Express (4.0).
O que o Node.js vem com
http / https
createServer
que simplesmente recebe um retorno de chamada (req, res), por exemploO que o connect adiciona
Middleware é basicamente qualquer software que fica entre o código do aplicativo e alguma API de baixo nível. O Connect estende a funcionalidade interna do servidor HTTP e adiciona uma estrutura de plug-in. Os plugins atuam como middleware e, portanto, o connect é uma estrutura de middleware
A maneira como faz isso é bastante simples ( e, de fato, o código é realmente curto! ). Assim que você liga,
var connect = require('connect'); var app = connect();
você obtém uma funçãoapp
que pode:.use
( origem ) para gerenciar plug-ins ( que vêm daqui por causa dessa simples linha de código ).Devido a 1.), você pode fazer o seguinte:
Combine com 2.) e você obtém:
O Connect fornece uma função de utilitário para se registrar,
http
para que você não precise fazer a chamadahttp.createServer(app)
. É chamadolisten
e o código simplesmente cria um novo servidor http, o registrador se conecta como retorno de chamada e encaminha os argumentos parahttp.listen
. De origemEntão, você pode fazer:
Ainda é bom para você,
http.createServer
com uma estrutura de plugins no topo.O que o ExpressJS adiciona
ExpressJS e connect são projetos paralelos. O Connect é apenas uma estrutura de middleware, com uma boa
use
função. O Express não depende do Connect ( consulte package.json ). No entanto, ele faz tudo o que conectar, ou seja:createServer
like connect, pois também é apenas uma função que pode levar umreq
/res
par ( fonte ).listen
função utilitária para se registrar com httpAlém do que o connect fornece (que expressa duplicatas), ele possui muitos outros recursos. por exemplo
O middleware é compartilhado
A
use
função do ExpressJS e connect é compatível e, portanto, o middleware é compartilhado . Ambas são estruturas de middleware, o Express tem mais do que uma estrutura de middleware simples .Qual deles você deve usar?
Minha opinião: você está informado o suficiente ^ com base no acima ^ para fazer sua própria escolha.
http.createServer
se você estiver criando algo como connect / expressjs do zero.http.createServer
A maioria das pessoas deve usar o ExpressJS.
O que há de errado com a resposta aceita
Isso pode ter sido verdade em algum momento, mas errado agora:
Errado. Não estende e como você viu ... usa
O Express 4.0 nem depende da conexão. consulte a seção atual das dependências package.json
fonte
node.js
O Node.js é um motor javascript para o lado do servidor.
Além de todos os recursos js, inclui recursos de rede (como HTTP) e acesso ao sistema de arquivos.
Isso é diferente dos js do lado do cliente, onde as tarefas de rede são monopolizadas pelo navegador e o acesso ao sistema de arquivos é proibido por razões de segurança.
node.js como um servidor da web: express
Algo que roda no servidor, entende HTTP e pode acessar arquivos, soa como um servidor web. Mas não é um.
Para fazer o node.js se comportar como um servidor web, é necessário programá-lo: manipule as solicitações HTTP recebidas e forneça as respostas apropriadas.
É isso que o Express faz: é a implementação de um servidor web em js.
Portanto, implementar um site é como configurar rotas Express e programar os recursos específicos do site.
Middleware e Connect
Servir páginas envolve várias tarefas. Muitas dessas tarefas são bem conhecidas e muito comuns; portanto, o módulo Connect do nó (um dos muitos módulos disponíveis para execução no nó) implementa essas tarefas.
Veja a atual oferta impressionante:
O Connect é a estrutura e, através dela, você pode escolher os (sub) módulos necessários.
A página Contrib Middleware enumera uma longa lista de middlewares adicionais .
O Express em si é fornecido com os middlewares Connect mais comuns.
O que fazer?
Instale o node.js.
O nó vem com o npm , o gerenciador de pacotes do nó .
O comando
npm install -g express
fará o download e instalará o express globalmente (consulte o guia expresso ).A execução
express foo
em uma linha de comando (não no nó) criará um aplicativo pronto para execução chamado foo. Mude para o diretório (recém-criado) e execute-o com o nó com o comandonode <appname>
, abrahttp://localhost:3000
e veja. Agora você está dentrofonte
O Connect oferece APIs de "nível superior" para funcionalidades comuns do servidor HTTP, como gerenciamento de sessões, autenticação, registro e muito mais. O Express é construído sobre o Connect com funcionalidade avançada (semelhante ao Sinatra).
fonte
Node.js
propriamente dito oferece um módulo HTTP, cujo método createServer retorna um objeto que você pode usar para responder a solicitações HTTP. Esse objeto herda ohttp.Server
protótipo.fonte
Informações relacionadas, especialmente se você estiver usando o NTVS para trabalhar com o Visual Studio IDE. O NTVS adiciona as ferramentas NodeJS e Express, andaimes e modelos de projeto ao Visual Studio 2012, 2013.
Além disso, a verbosidade que chama ExpressJS ou Connect como um "servidor da Web" está incorreta. Você pode criar um servidor Web básico com ou sem eles. Um programa básico do NodeJS também pode usar o módulo http para lidar com solicitações http, tornando-se um servidor da web rudimentar.
fonte
middleware como o nome sugere, na verdade, o middleware fica entre o meio e o meio? meio da solicitação e resposta .. como pedido, resposta, servidor expresso, sente-se no aplicativo expresso nesta imagem, você pode ver as solicitações provenientes do cliente, em seguida, o servidor do servidor expresso atende a essas solicitações .. então vamos nos aprofundar .. na verdade, podemos dividir isso toda a tarefa do servidor expresso em pequenas tarefas separadas, como desta maneira. como o middleware fica entre a solicitação e a resposta, pequeno pedaço de parte do servidor executando alguma tarefa específica e passando a solicitação para a próxima. finalmente, executando todas as tarefas que a resposta foi feita. todo o middleware pode acessar o objeto de solicitação, o objeto de resposta e a próxima função da solicitação ciclo de resposta ..
este é um bom exemplo para explicar o middleware no vídeo expresso do youtube para middleware
fonte
A resposta simples e estúpida
Connect e Express são servidores da web para nodejs. Ao contrário do Apache e do IIS, os dois podem usar os mesmos módulos, chamados de "middleware".
fonte