Estoy tratando de aprender express. Estoy usando FS para cargar mi página HTML. Lo único que pude encontrar sobre esto con una búsqueda en Google fue usar ASP.NET en lugar de Express.
Servidor.js:
var express = require('express'); var path = require('path'); var fs = require('fs'); var app = express(); app.use(require('body-parser').urlencoded({ extended: true })); app.use(express.static(path.join(__dirname+'/'))) app.get('/', function(a,b,c){ fs.readFileSync('index.html'); }); app.post('/testaction', function(a,b){ console.log(a.body.log); fs.readFileSync('Logged.html'); }); app.listen(3000);índice.html:
<!DOCTYPE html> <html> <head> <title>Test Page</title> </head> <body> <form method="post" action="http://localhost:3000/testaction"> <h1>Log This:</h1> <input type="text" name="log"/> <input type="submit", value="Press Me!"/> </form> </body> </html>Para servir archivos, no tiene que usar fs. Ejemplo:
app.get('/', function(req, res, next) { res.render('index'); });Si necesita redirigir, puede usar:
res.redirect('/staticFile.html');Eliminar estas líneas:
app.get('/', function(a,b,c){ fs.readFileSync('index.html'); });Esta línea es middleware y se aplica a todas las rutas en cada solicitud:
app.use(express.static(path.join(__dirname+'/')))Su propósito es servir archivos estáticos desde cualquier ruta que proporcione. En este caso, está sirviendo desde el directorio raíz para que pueda navegar a todos sus archivos de código como, por ejemplo, http://localhost:3000/package.json .
Se aplica a todos los métodos HTTP, get post put, etc.
Cuando escribe app.get('/' , anula ese middleware con una nueva ruta e intenta servir solo un archivo. Simplemente suelte ese código y servirá todo estáticamente desde el directorio que especificó anteriormente.
Si no desea servir sus archivos de código, coloque sus archivos estáticos en una carpeta diferente como "sitio" y configure su ruta estática a esa carpeta, por ejemplo:
app.use('/', express.static(__dirname + '/site'));