224 votes

Chargement de base en HTML en NodeJS

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>...');.

255voto

David Granado Points 1598

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!

54voto

l'utilisation de l'app.get pour obtenir le fichier html. sa simple!!

app.get('/', function(request, response){
    response.sendfile('yourhtmlpagename.html');
});

son aussi simple que cela.

43voto

Stephen Points 2531

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

22voto

Paul Points 472

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.

19voto

user2428926 Points 31

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X