使用没有任何框架的节点js进行简单导航

时间:2015-07-19 02:50:31

标签: node.js navigation

当我阅读" login.html"在app.js中有两个href链接(登录和注册),它应该重定向到提供的位置但是当我点击它们时它不会发生? 这里是代码

var http = require('http');
   var fs = require('fs');       
http.createServer(function (req, res) {

  fs.readFile('./login.html' , function(err, data){


if(err){
    console.log(err);
}


console.log("sanjay");


res.end(data);
}); 



}).listen(3000);
console.log('Server running at http://<workspace-url>/');

&#34;的login.html&#34;

<html>
<head>

</head>
<body>


<ul>

<li><a href="index.html" >login</a></li>
<li><a href="index.html">signup</a></li>

</ul>



</body>




</html>

2 个答案:

答案 0 :(得分:0)

nodejs服务器不会自动提供任何文件。您有代码来提供login.html,但您没有任何代码可以提供任何其他文件。因此,在编写服务器时,无论请求的是什么URL,所有请求都将提供login.html。

如果您想坚持使用普通的http服务器,那么您必须查看req参数以查看所请求的路径,然后提供适当的文件。但是,像Express这样的简单框架使用一行代码提供大量的静态HTML文件变得更加简单。

请求对象为documented here,您可以查看req.url是否要查看请求的网址,然后提供相应的文件。

我个人建议您使用Express framework,您可以使用express.static()功能通过一行代码为静态HTML文件提供服务。

答案 1 :(得分:0)

您的app.js文件仅提供login.html,但它没有处理index.html的请求。

您可以像这样修改app.js:

http.createServer(function (req, res) {
  if (req.url === '/index.html') {
    fs.createReadStream(__dirname + '/index.html').pipe(res)
  } else {
    fs.createReadStream(__dirname + '/login.html').pipe(res)
  }
}).listen(3000)