NodeJs学习(二)

1.简化的http核心模块

针对NodeJs学习(一),本次学习中,简化了对http核心模块的代码,如下:

//加载http核心模块

var http = require('http')

/*创建http服务器,简化var server = http.createServer();
*server.on('request',function(req,res){})
*server.listen(3000,function(){})
/

http.createServer(function(req,res){
    
}).listen(3000,function(){
    console.log('Server running ......')
})

2.利用art-template模板引擎渲染HTML文件

首先可以通过npm,在cmd中找寻到需要的文件位置,输入命令行npm install art-template命令,就可以在所在文件的位置直接在线下载最新的art-template模板引擎,例如:

下载完成后就可以看见文件目录下已经多了个node_modules的包

然后可以根据需求创建一个HTML文件,然后创建一个js文件开始利用art-template模板引擎渲染。

首先需要加载art-template核心模块,至于为什么,因为npm install art-template下载的是什么,就以什么为核心模块加载。

下面则是一个留言本的简单小例子,练手用而已:

app.js

//加载art-template核心模块,变量名可以随意起,但最好和核心模块一样
var template = require('art-template')
var fs = require('fs')//用来读取文件并渲染
var http = require('http')
var url = require('url')//用已解析的请求路径

//创建一个数组
var comments = [
	{
		name:'小红',
		message:'这个世界真的好美!',
		dateTime:'2018-10-12'
	},
	{
		name:'小明',
		message:'是吗,我怎么觉得明天更美',
		dateTime:'2018-10-13'
	},
	{
		name:'老师',
		message:'你们好好学习,将来回报祖国',
		dateTime:'2018-10-14'
	}
]

http.createServer(function(req,res){
    //获取到请求路径,true表示将请求路径pathname和参数query分开,
    //一般请求路径为127.0.0.1:8080/路径?参数
	var pathObject = url.parse(req.url,true)
	var path = pathObject.pathname//路径
	if(path == '/'){
		fs.readFile('./views/index.html',function(err,data){
			if(err){
				return res.end('404 not found !')
			}
            //render(字符串,对象)
			var datas = template.render(data.toString(),{
                //用来传值到html界面中的<each comments>.....</each>
				comments:comments
			})
			res.end(datas)
		})
	}else if(path == '/post'){
		fs.readFile('./views/post.html',function(err,data){
			if(err){
				return res.end('404 not found')
			}
			res.end(data)
		})
	}else if(path == '/pinglun'){
		var comment = pathObject.query//接收到的参数
        //创建当前时间
		var date = new Date()
		var time =date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()
		comment.dateTime = time
        //将数据放到comments数组的第一个
		comments.unshift(comment)
        //设置状态码并重定向到初始页面,index.html
		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)
		})
	}
}).listen(3000,function(){
	console.log('Server running ......')
})

index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>留言本</title>
</head>

<body>
  <div class="header container">
    <div class="page-header">
      <h1>Example page header <small>Subtext for header</small></h1>
      <a class="btn btn-success" href="/post">发表留言</a>
    </div>
  </div>
  <div class="comments container">
    <ul class="list-group">
      {{each comments}}
      	<li class="list-group-item">{{$value.name}}说:{{$value.message}}<span class="pull-right">{{$value.dateTime}}</span></li>
      {{/each}}
    </ul>
  </div>
</body>

</html>

post.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" href="/public/lib/bootstrap/dist/css/bootstrap.css">
</head>

<body>
  <div class="header container">
    <div class="page-header">
      <h1><a href="/">首页</a> <small>发表评论</small></h1>
    </div>
  </div>
  <div class="comments container">
    <form action="/pinglun" method="get">
      <div class="form-group">
        <label for="input_name">你的大名</label>
        <input type="text" class="form-control" required minlength="2" maxlength="10" id="input_name" name="name" placeholder="请写入你的姓名">
      </div>
      <div class="form-group">
        <label for="textarea_message">留言内容</label>
        <textarea class="form-control" name="message" id="textarea_message" cols="30" rows="10" required minlength="5" maxlength="20"></textarea>
      </div>
      <button type="submit" class="btn btn-default">发表</button>
    </form>
  </div>
</body>

</html>

总结:本次学习,主要学习了http,url,fs,art-template四个核心模块的综合使用,实现了一个简单留言本功能。通过http创建服务器并接收请求做相应的处理,首先由url模块接收请求路径并拆分为路径和参数,其次利用art-template模板引擎进行信息的传递,最后利用fs核心模块跳转到指定页面,并传值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值