Node JS 03 - 留言板案例

Node JS 03 - 留言板案例

关键点 :

  1. 如何获取到 url 中的参数
  2. 如何实现页面跳转到原始页面

答案 :

  1. 通过引入 url 模块, 使用 var parseObj = url.parse(req.url,true) 解析 url 并将参数自动封装为对象, 通过 parseObj.query返回参数对象.

  2. 通过重定向

    1. 设置请求的状态码为 res.statusCode=302
    2. 设置 header 为 res.setHeader('Location','/')
  3. 注意 : 301 和 302 区别

    1. 301 : 永久重定向 , 即 比如 a.com —> b.com , 下次请求的时候不需要请求 a.com 而是直接到 b,com .

      比如 : www.sina.com 301 到 www.sina.com.cn

    2. 302 : 临时从定向 , 即 比如 a.com —> b.com , 下次请求的时候还是需要请求 a.com 然后到 b,com .

var http = require('http')
var fs = require('fs')
var template = require('art-template')
var url = require('url')
var comments = [
	{
		name:'张三',
		message:'我叫张三',
		dataTime:'2019-7-16'
	},
	{
		name:'张三',
		message:'我叫张三',
		dataTime:'2019-7-16'
	},
	{
		name:'张三',
		message:'我叫张三',
		dataTime:'2019-7-16'
	}
	
]

http
	.createServer(function(req,res){
		
		//解析 url 获得解析对象
		var parseObj = url.parse(req.url,true)
		//获得 url 地址
		var pathName = parseObj.pathname
		
		console.log(parseObj)
		
		if(pathName === '/'){
			fs.readFile('./views/index.html',function(err,data){
				if(err){
					console.log('index文件读取失败')
				}else{
					var htmlStr = template.render(data.toString(),{
						comments:comments
					})
					res.end(htmlStr)
				}
			})
		}else if(pathName.indexOf('/public/') === 0){
			console.log('url:'+pathName)
			fs.readFile('.'+pathName,function(err,data){
				if(err){
					return console.log('读取public文件失败')
				}else{
					res.end(data)
				}
			})
		}else if(pathName === '/post'){
			console.log('PostURL:'+pathName)
			fs.readFile('./views/post.html',function(err,data){
				if(err){
					return console.log('读取public文件失败')
				}else{
					console.log(data)
					res.end(data)
				}
			})
		}else if(pathName === '/pinglun'){
			//通过解析对象获得参数对象
			var comment = parseObj.query;
			//设置 comment 的日期
			var dataTime = new Date()
			comment.dataTime = dataTime
			//放入数组中
			comments.push(comment)
			//进行重定向
			res.statusCode=302
			res.setHeader('Location','/')
			res.end()
		}else{
			fs.readFile('./views/404.html',function(err,data){
				if(err){
					return res.out('404 NOT FOUND')
				}else{
					res.end(data)
				}
			})
		}
	})
	.listen(3000,function(){
		console.log('服务器已启动...')
	})				
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值