node guide node.js express render-html

node.js - node js guide



nodejs enviar el archivo html al cliente (3)

Puedes renderizar la página en express más fácilmente.

var app = require(''express'')(); //to install express write "npm install express" app.get(''/signup'',function(req,res){ res.sendFile(path.join(__dirname+''/signup.html''));

});

así que si solicita como http://127.0.0.1:8080/signup , se mostrará la página signup.html

Utilizo esta función para enviar archivos html al cliente, pero en el cliente no obtengo nada (página en blanco) sin error. Algo me equivoque, por favor ayuda?

var express = require(''express''); var fs = require(''fs''); var app = express(); app.set(''view engine'', ''jade''); app.engine(''jade'', require(''jade'').__express); app.get(''/test'', function(req, res) { fs.readFile(__dirname + ''/views/test.html'', ''utf8'', function(err, text){ res.send(text); }); var port = process.env.PORT || 80; var server = app.listen(port); console.log(''Express app started on port '' + port);

Mi archivo test.html

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <style something here </style> <title>Test</title> <script src="..."></script> </head> <body> <div> Somthing here </div> <script type="text/javascript"> //something here </script> </body></html>


Después de años, quiero agregar otro enfoque mediante el uso de un motor de visualización en Express.js

var fs = require(''fs''); app.get(''/test'', function(req, res, next) { var html = fs.readFileSync(''./html/test.html'', ''utf8'') res.render(''test'', { html: html }) // or res.send(html) })

Luego, haz eso en tus views/test si eliges el método res.render en el código anterior (estoy escribiendo en formato EJS):

<%- locals.html %>

Eso es todo.

De esta forma, no es necesario que rompa los acuerdos de View Engine.


Prueba tu código de esta manera:

var app = express(); app.get(''/test'', function(req, res) { res.sendFile(''views/test.html'', {root: __dirname }) });

  1. Use res.sendFile lugar de leer el archivo manualmente para que Express pueda manejar la configuración del tipo de contenido correctamente para usted.

  2. No necesita la línea app.engine , ya que se maneja internamente por Express.