Juste un simple nodejs question de noob ici. J'essaie de trouver comment charger et "afficher" un fichier HTML de base donc je n'ai pas d'écrire du code commeresponse.write('...<p>blahblahblah</p>...');
.
Réponses
Trop de publicités?Je viens de trouver un chemin à l'aide de la fs de la bibliothèque. Je ne suis pas certain si c'est le plus propre.
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);
});
Le concept de base est juste de fichier raw de la lecture et de décharger le contenu. Toujours ouvert à des options plus propres, si!
Vous pouvez echo les fichiers manuellement à l'aide de la fs de l'objet, mais je vous recommande d'utiliser le ExpressJS cadre pour rendre votre vie beaucoup plus facile.
...Mais si vous insistez à faire à la dure:
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res){
fs.readFile('test.html',function (err, data){
res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
res.write(data);
res.end();
});
}).listen(8000);
Je sais que c'est une vieille question, mais comme personne ne l'a mentionné, j'ai pensé qu'il était intéressant d'ajouter:
Si vous avez littéralement voulez servir du contenu statique (disons une page 'a propos', image, css, etc), vous pouvez utiliser l'un de la statique de diffusion de contenu des modules, par exemple nœud-statique. (Il y a d'autres personnes qui pourraient être mieux/pire - essayer search.npmjs.org.) Avec un peu de pré-traitement, vous pouvez ensuite filtrer les pages dynamiques, statiques et de les envoyer à la bonne demande du gestionnaire.
Ce serait sans doute qu'un peu mieux, puisque vous serez en streaming le ou les fichier(s) plutôt que de se charger de tout cela dans la mémoire, comme fs.readFile.
var http = require('http');
var fs = require('fs');
var path = require('path');
var ext = /[\w\d_-]+\.[\w\d]+$/;
http.createServer(function(req, res){
if (req.url === '/') {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream('index.html').pipe(res);
} else if (ext.test(req.url)) {
fs.exists(path.join(__dirname, req.url), function (exists) {
if (exists) {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.createReadStream('index.html').pipe(res);
} else {
res.writeHead(404, {'Content-Type': 'text/html'});
fs.createReadStream('404.html').pipe(res);
});
} else {
// add a RESTful service
}
}).listen(8000);