目录
  1. 1. 文件目录
  2. 2. 应用程序app.js
  3. 3. 页面
  4. 4. 总结
Node初上手,搞一个简单留言板

文件目录

  • /
    • node_modules 存放模块文件
    • public 存放静态资源
    • views 存放页面文件
    • app.js 应用程序脚本
<!DOCTYPE html>
<html lang="en">

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

<link rel="stylesheet" href="/public/lib/bootstrap/dist/css/bootstrap.css">
</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>

应用程序app.js

// 引包
var http = require('http')
var fs = require('fs')
var template = require('art-template')
var url = require('url')

var comments = [
{
name: '张三',
message: '今天天气不错!',
dateTime: '2015-10-16'
},
{
name: '张三2',
message: '今天天气不错!',
dateTime: '2015-10-16'
},
{
name: '张三3',
message: '今天天气不错!',
dateTime: '2015-10-16'
},
{
name: '张三4',
message: '今天天气不错!',
dateTime: '2015-10-16'
},
{
name: '张三5',
message: '今天天气不错!',
dateTime: '2015-10-16'
}
]


// 此处简写,.createServer 返回的是server
http
.createServer(function(req, res){
// 获取pathName解析对象
var parseObj = url.parse(req.url, true)
// 单独获取查询字符串的路径部分,不包括提交的参数
var pathName = parseObj.pathname
if(pathName === '/'){
fs.readFile('./views/index.html', function (err, data) {
if(!err){

// 渲染结果
var htmlStr = template.render(data.toString(), {
comments: comments
})
// 响应渲染后的结果
res.end(htmlStr)
}
else
return res.end('404 Not Found.')

})
}
// 提交评论
else if(pathName === '/pinglun'){
// 让用户重定向跳转到首页 /
// 如何通过服务器让客户端重定向?
// 1. 状态码设置为 302 临时重定向
// statusCode
// 2. 在响应头中通过 Location 告诉客户端往哪儿重定向
// setHeader
// 如果客户端发现收到服务器的响应的状态码是 302 就会自动去响应头中找 Location ,然后对该地址发起新的请求,所以你就能看到客户端自动跳转了
// 设置状态码为302
/*
301 永久重定向--浏览器会记住
302 临时重定向--浏览器不会记住
*/
var comment = parseObj.query
comment.dateTime = '2015-10-22'
comments.push(comment)

res.statusCode = 302
res.setHeader('location', '/')
res.end()
}
// 评论页面
else if(pathName === '/post'){
fs.readFile('./views/post.html', function(err, data){
if(!err){
res.end(data)
}
else
return res.end('4040 Not Found.')
})
}
// 处理静态文件
else if(pathName.indexOf('/public/') === 0){
// 读文件
fs.readFile('.' + pathName, function(err, data){
if(!err){
res.end(data)
}
else
return res.end('404 Not Found.')
})
}
// 404处理
else
fs.readFile('./views/404.html',function(err, data){
if(!err)
return res.end(data)
else
return res.end('404 Not Found')
})

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

页面

总结

  • Node 不适合从来没有接触过服务端的人学习
  • 如果想要真正的学号服务端,还是老牌的 Java、PHP 这些平台
  • Node 不是特别适合入门服务端,但不代表 Node 不强大,感觉 Node 很厉害,具有经验的人可以玩儿的非常的牛
  • 为什么不大适合新手呢,不适合新手的原因就在于比较偏底层、而且太灵活,很多东西都是底层的东西其实用上框架后也不赖
  • Java、PHP 好入门的原因就在于:这些平台屏蔽了一些底层
文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-06/02/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/NodeJS/%E6%90%9E%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%95%99%E8%A8%80%E6%9D%BF/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论