node留言板

创建app.js 先搭建一个基本服务器,用户输入地址请求的时候默认跳到首页

var http = require('http');
var fs= require('fs');
var server = http.createServer();

server.on('request',function (req, res){
  var pathname = req.url;
  //如果 请求/返回的是/index.html
  if (url === '/') {
    fs.readFile('./views/index.html', function (err, data) {
      res.end(data);
  })

  }
});
server.listen(3000,function (){
  
  console.log('server is running');

})

当浏览器收到html响应内容的时候,会从上到下依次解析,当在解析过程中如果发现页面中有如下标签

lse if(pathname.indexOf('/public/')===0) { //pathname是请求时候的url地址,这个地址不需要手动输入,
                                            //如果请求的是public下的资源,就当做public中的资源,然后就可以将请求资源当做文件资源来处理
                                            //

        fs.readFile('.'+pathname, function(err, data){
          if(err){
            return res.end('file can not found');
          }

          res.end(data);
        })

    } 

});
else if (pathname === '/post') {
      // 其它的都处理成 404 找不到
      fs.readFile('./views/post.html', function (err, data) {
        if (err) {
          return res.end('404 Not Found.')
        }
        res.end(data)
      })
    }

完整的App.js代码

var http = require('http');
var fs= require('fs');
//所以引入url模块
var urlObj = require('url');
var template = require('art-template');

var comments=[


];
var server = http.createServer();
server.on('request',function (req, res){
   // 使用 url.parse 方法将路径解析为一个方便操作的对象,第二个参数为 true 表示直接将查询字符串转为一个对象(通过 query 属性来访问)
    var parseObj = urlObj.parse(req.url, true)

   var pathname = req.url;
   
  //如果 请求/返回的是/index.html

  if (pathname === '/') {
    fs.readFile('./views/index.html', function (err, data) {
      if(err){
        return res.end('404 can not find');
       
      }

     var htmlStr = template.render(data.toString(), {
          comments: comments
        })
        res.end(htmlStr)
  }) 
  }else if(pathname.indexOf('/public/')===0) { //如果请求的是public下的资源,就当做public中的资源,然后就可以将请求资源当做文件资源来处理
        fs.readFile('.'+pathname, function(err, data){
          if(err){
            return res.end('file can not found');
          }

          res.end(data);
        })

    } else if (pathname === '/post') {
        fs.readFile('./views/post.html', function (err, data) {
          if(err){
            return res.end('post can not found');
          }

          res.end(data);
        });
    }else if (pathname.indexOf('/pinglun')===0 ){//说明点击了发表
      //将数据保存下来,这里为get提交,数据就在url地址中,获取到了对象中的内容
      var data = parseObj.query;
      //这里的发表日期先固定写死
   //   data.dateTime = '2017-11-2 17:11:22';
       data.dateTime = '2017-11-2 17:11:22';
      //将得到的数据存入comments 中
      comments.unshift(data)


      //接下来要做的是重定向
      res.statusCode = 302
      res.setHeader('Location', '/')
      res.end()



    }else {
      // 其它的都处理成 404 找不到
      fs.readFile('./views/404.html', function (err, data) {
        if (err) {
          return res.end('404 Not Found.')
        }
        res.end(data)
      })
    }

});

server.listen(300,function (){
  
  console.log('server is running');

})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值