2014-02-04 2 views
0

Я новичок в nodejs и expressjs Я пытаюсь создать простую страницу входа, в которой есть имя пользователя и пароль внутри формы. при отправке формы я перенаправляю пользователя на домашнюю страницу, где я покажу приветственное имя пользователя user_name. Я хочу, чтобы как логин, так и домашние страницы были простыми html-файлами. Форма на странице входа имеет действие, установленное на home.html, поэтому, когда пользователь отправляет форму, я могу получить имя пользователя и пароль, используя res.body.userName и res.body.password. Мой вопрос заключается в том, как использовать express для рендеринга html-файла. Я знаю, что я могу использовать функцию res.sendfile для отправки файла html, но функция sendfile не поддерживает обмен переменных в html-файле. Я разместил ниже моего кода в app.jsexpressjs render html file without any engine

var http = require("http"); 
var express = require("express"); 
var app = express(); 
app.use(express.bodyParser()); 
app.all("/",function(req,res,next){ 
    res.render("login.html"); 
}); 
app.all("/home.html",function(req,res,next){ 
    res.render("home.html",{"userName":req.body.userName}); 
}) 
http.createServer(app).listen(3000,function(){ 
    console.log("Listening at port 3000"); 
}) 
+0

Для этого вам понадобится механизм рендеринга, такой как jade или ejs. – umair

+3

HTML не является языком шаблонов, просто чисто разметкой. EJS - это самое близкое к простому HTML с возможностью добавления переменных. – jsantell

ответ

4

Вам не нужен движок рендеринга для обслуживания статических активов, как HTML файлы. Вы должны переосмыслить то, что в настоящее время служат на другом запросе, но за то, что вы хотите, вы должны поместить статичные активы в каталоге и сказать выразить, где они, как так

app.use(express.static('public')); 

Предполагая, что ваш файловый сервер находится на корне, и у вас также есть папка public на корне, поместите ваши html-файлы в папку. По умолчанию экспресс будет искать файл index.html у подножия этой общей папки и подавать его по запросу GET на адрес /. Вы отменяете это, обслуживая страницу входа в систему. Хорошо. Вы должны использовать res.sendfile('/path/to/file') вместо res.render()