J'essaie de savoir comment charger et rendre un fichier HTML de base, donc je n'ai pas à écrire du code comme:
response.write('...<p>blahblahblah</p>...');
Je viens de trouver un moyen d'utiliser la bibliothèque fs . Je ne sais pas 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 simplement la lecture de fichiers bruts et le vidage du contenu. Toujours ouvert à des options plus propres, cependant!
sys = require('util')
n'est pas nécessaire car rien n'est imprimé sur la console.fs.readFile
pourrait être placé à l'intérieur de l'appel àhttp.createServer
, permettant de gérer l'erreur. Utilisez la réponse de Stephen avecif (err) { console.log('something bad'); return res.end('Oops! Something bad happened.');}
Lareturn
déclaration est la chose simple que les nouveaux utilisateurs peuvent ignorer.utilisez app.get pour obtenir le fichier html. c'est simple!!
c'est aussi simple que ça. Pour cela, utilisez le module express. Installez express:
npm install express -g
la source
express
.var express = require('express'); var app = express();
npm install express --save
au lieu de -gVous pouvez faire écho des fichiers manuellement en utilisant l'objet fs, mais je vous recommande d'utiliser le framework ExpressJS pour vous faciliter la vie.
... Mais si vous insistez pour le faire à la dure:
la source
Je sais que c'est une vieille question, mais comme personne ne l'a mentionné, j'ai pensé qu'il valait la peine d'ajouter:
Si vous voulez littéralement diffuser du contenu statique (par exemple une page, une image, un CSS, etc.), vous pouvez utiliser l'un des modules de diffusion de contenu statique, par exemple node-static. (Il y en a d'autres qui peuvent être meilleurs / pires - essayez search.npmjs.org.) Avec un peu de prétraitement, vous pouvez ensuite filtrer les pages dynamiques de statiques et les envoyer au bon gestionnaire de requêtes.
la source
Ce serait probablement quelque chose de mieux puisque vous allez diffuser le ou les fichiers plutôt que de les charger tous en mémoire comme fs.readFile.
la source
Ceci est une mise à jour de la réponse de Muhammed Neswine
Dans Express 4.x, sendfile est obsolète et la fonction sendFile doit être utilisée. La différence est que sendfile prend un chemin relatif et sendFile prend un chemin absolu. Ainsi, __dirname est utilisé pour éviter de coder en dur le chemin.
la source
C'est une manière plus flexible et simple d'utiliser la
pipe
méthode.la source
La meilleure façon que j'ai apprise est d'utiliser express avec des fichiers html car express donne beaucoup d'avantages. Vous pouvez également l'étendre à une plate-forme Heroku si vous le souhaitez.
Propre et meilleur .. !!!
la source
Le moyen le plus simple est de mettre tous vos fichiers, y compris index.html ou quelque chose avec toutes les ressources telles que CSS, JS, etc. dans un dossier public ou vous pouvez le nommer comme vous voulez et maintenant vous pouvez utiliser express js et simplement dire à l'application d'utiliser le _dirname comme:
Dans votre server.js utilisant express ajoutez ces
et si vous voulez que le répertoire séparé ajoute un nouveau répertoire sous le répertoire public et utilisez ce chemin "/ public / YourDirName"
Alors qu'est-ce que nous faisons ici exactement? nous créons une instance express nommée app et nous donnons l'adresse si le répertoire public pour accéder à toutes les ressources. J'espère que cela t'aides !
la source
Que diriez-vous d'utiliser le module express?
ensuite, vous pouvez utiliser le navigateur pour obtenir / localhost: 8000
la source
la source
response.writeHeader()
, mais plutôtresponse.writeHead()
.response.writeHeader()
et lesresponse.writeHead()
deux sont valides.C'est vraiment simple si vous utilisez un tuyau. Voici l'extrait de code server.js.
la source
../
. Si je ne faisais que changer__dirname + "/index.html'
quelque chose comme__dirname + requestedPageFromHeader
, je pense que le code résultant aurait cette vulnérabilité. Les caractères de cheminement de répertoire comme~
seront corrects tant que vous incluez le__dirname +
- si l'utilisateur peut déterminer le début du chemin devra également les vérifier.Je pense que ce serait une meilleure option car elle montre l'URL exécutant le serveur:
la source
Vous pouvez également utiliser cet extrait:
la source
Je sais que c'est une vieille question - voici un simple utilitaire de serveur de fichiers si vous préférez ne pas utiliser connect ou express; mais plutôt le module http.
la source
utilisez ejs au lieu de jade
npm install ejs
app.js
./routes/index.js
la source
C'est une assez vieille question ... mais si votre cas d'utilisation ici est d'envoyer simplement une page HTML particulière au navigateur sur une base ad hoc, j'utiliserais quelque chose de simple comme ceci:
la source
nous pouvons charger le document html avec le travail du cadre de connexion. J'ai placé mon document html et les images associées dans le dossier public de mon projet où le code ci-dessous et les modules de nœuds sont présents.
J'ai essayé la méthode readFile () de fs, mais elle ne parvient pas à charger les images, c'est pourquoi j'ai utilisé le cadre de connexion.
la source
https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906
Voici mes codes de démonstration simples pour héberger des fichiers HTML statiques en utilisant le serveur Express!
j'espère que cela vous aide!
la source