Estou tentando descobrir como carregar e renderizar um arquivo HTML básico para não precisar escrever código como:
response.write('...<p>blahblahblah</p>...');
Acabei de encontrar uma maneira de usar a biblioteca fs . Não tenho certeza se é o mais limpo.
var http = require('http'),
fs = require('fs');
fs.readFile('./index.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(8000);
});
O conceito básico é apenas ler arquivos brutos e despejar o conteúdo. Ainda está aberto a opções mais limpas!
sys = require('util')
não é necessário, pois nada é impresso no console.fs.readFile
pode ser feita dentro da chamada parahttp.createServer
, permitindo que o erro seja tratado. Use a resposta de Stephen comif (err) { console.log('something bad'); return res.end('Oops! Something bad happened.');}
Areturn
afirmação é a coisa simples que os novos usuários podem ignorar.use app.get para obter o arquivo html. é simples!!
É simples assim. Para isso, use o módulo express. Instale express:
npm install express -g
fonte
express
.var express = require('express'); var app = express();
npm install express --save
vez de -gVocê pode ecoar arquivos manualmente usando o objeto fs, mas eu recomendo o uso da estrutura ExpressJS para facilitar sua vida.
... Mas se você insistir em fazer da maneira mais difícil:
fonte
Sei que essa é uma pergunta antiga, mas como ninguém a mencionou, pensei que valeria a pena acrescentar:
Se você quiser literalmente veicular conteúdo estático (por exemplo, uma página 'sobre', imagem, css, etc.), poderá usar um dos módulos de veiculação de conteúdo estático, por exemplo, estático do nó. (Existem outros que podem ser melhores / piores - tente search.npmjs.org.) Com um pouco de pré-processamento, você pode filtrar as páginas dinâmicas da estática e enviá-las ao manipulador de solicitações certo.
fonte
Provavelmente, isso seria um pouco melhor, pois você fará o streaming do (s) arquivo (s) em vez de carregar tudo na memória como fs.readFile.
fonte
Esta é uma atualização da resposta de Muhammed Neswine
No Express 4.x, o sendfile foi descontinuado e a função sendFile deve ser usada. A diferença é que sendfile usa o caminho relativo e sendFile usa o caminho absoluto. Portanto, __dirname é usado para evitar a codificação do caminho.
fonte
É a maneira mais flexível e simples de usar o
pipe
método.fonte
A melhor maneira que aprendi é usar o express com arquivos html, pois o express oferece muitas vantagens. Além disso, você pode estendê-lo para uma plataforma Heroku, se quiser ... Basta dizer :)
Limpo e melhor .. !!!
fonte
A maneira mais fácil de fazer é colocar todos os seus arquivos, incluindo index.html ou algo com todos os recursos, como CSS, JS etc., em uma pasta public ou você pode nomear o que quiser e agora pode usar js express e apenas informar ao app para usar o _dirname como:
No server.js usando express, adicione estes
e se você quiser ter um diretório separado, adicione um novo diretório no diretório público e use esse caminho "/ public / YourDirName"
Então, o que estamos fazendo aqui exatamente? estamos criando uma instância expressa chamada app e estamos dando o endereço se o diretório público acessar todos os recursos. Espero que isto ajude !
fonte
Que tal usar o módulo expresso?
então, você pode usar o navegador para obter / localhost: 8000
fonte
fonte
response.writeHeader()
, mas simresponse.writeHead()
.response.writeHeader()
eresponse.writeHead()
ambos são válidos.Eu acho que essa seria uma opção melhor, pois mostra a URL executando o servidor:
fonte
Você também pode usar este trecho:
fonte
É muito simples se você usar cachimbo. A seguir está o trecho de código server.js.
fonte
../
. Se não fizéssemos nada além de mudar__dirname + "/index.html'
para algo como__dirname + requestedPageFromHeader
, acredito que o código resultante teria essa vulnerabilidade. Caracteres de caminho de diretório como~
ficarão bem, desde que você inclua o__dirname +
de caminho de - se o usuário puder determinar o início do caminho, também será necessário verificar isso.Sei que essa é uma pergunta antiga - aqui está um utilitário de servidor de arquivos simples, se você preferir não usar o connect ou express; mas sim o módulo http.
fonte
use ejs em vez de jade
npm install ejs
app.js
./routes/index.js
fonte
Esta é uma pergunta bastante antiga ... mas se o seu caso de uso aqui for simplesmente enviar uma página HTML específica para o navegador em uma base ad hoc, eu usaria algo simples como este:
fonte
podemos carregar o documento html com o trabalho de conexão de quadros. Coloquei meu documento html e as imagens relacionadas na pasta pública do meu projeto, onde os módulos de código e nó abaixo estão presentes.
Eu tentei o método readFile () do fs, mas ele falha ao carregar as imagens, é por isso que usei a estrutura de conexão.
fonte
https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906
Aqui estão meus códigos de demonstração simples para hospedar arquivos HTML estáticos usando o servidor Express!
espero que ajude para você!
fonte