
最近在学习 Nodejs ,在学习时主要学习 Node 内部封装的模块 ,使用起来还是非常有意思的。于是就写了一个简单的留言板,来试试手。
本留言板使用的模块有 http丶fs丶url丶 querystring 。
好了不多说了,来看代码。
下面是目录结构

下面来看 app.js 里的代码
const http = require('http')
const fs = require('fs')
const data = require('./data')
const Durl = require('url')
const querystring = require('querystring')
const server = http.createServer('http')
server.on('request',(Request,Response) => {
console.log(Request.url)
var url = Request.url
//访问主页
if (url === '/'){
var index = fs.readFileSync('./view/index.html','utf8')
var content = ''
data.msgs.forEach((item) => {
content += `<li class="list-group-item">${item.name}说:${item.content} <span class="pull-right">${item.create_at}</span></li>`
})
index = index.replace('{{$msg}}',content)
Response.setHeader('content-type','text/html;charset=utf-8')
Response.end(index)
//访问静态资源
}else if(url.indexOf('/public/') === 0){
var res = fs.readFileSync('.' + url)
Response.end(res)
//访问添加留言页面
}else if(url === '/post'){
var post = fs.readFileSync('./view/addMsg.html','utf8')
Response.setHeader('content-type','text/html;charset=utf-8')
Response.end(post)
//添加留言
}else if(url.indexOf('/addmsg') === 0){
//接收get数据
if(Request.method === 'GET'){
let paramData = Durl.parse(url,true).query
if(!paramData.name || !paramData.content){
return Response.end('404 Not Found')
}
var date = new Date();
var tDate = date.toLocaleString()
var msg = {name: paramData.name, content: paramData.content, create_at: tDate}
data.msgs.push(msg)
Response.statusCode = 302
Response.setHeader('Location','/')
Response.end()
}
//接收post数据
if(Request.method === 'POST'){
var pdata =''
Request.on('data',function (chunk){
pdata += chunk
})
Request.on('end',function(){
var dataString = pdata.toString()
var dataObj = querystring.parse(dataString)
console.log(dataObj)
var date = new Date();
var tDate = date.toLocaleString()
var msg = {name: dataObj.name, content: dataObj.content, create_at: tDate}
data.msgs.push(msg)
Response.statusCode = 302
Response.setHeader('Location','/')
Response.end()
})
}
//404页面
}else{
var lost404 = fs.readFileSync('./view/404.html','utf8')
Response.writeHeader(404, 'Not Found', {'Content-Type' : 'text/html; charset=utf8'})
Response.end(lost404)
}
})
server.listen(8080,function(){
console.log('服务启动成功,打开 localhost:8080 进行访问')
})
其实大概思路都差不多,创建 http 服务并启动服务,接收请求,返回数据。
data.js 里就是一点数据而已

静态页面什么的就不多说了,这个大家都会。
博主 nodejs 刚入门,还有很多不足之处,还请见谅。
这里是项目所有代码:https://oss.iacblog.com/res/MsgBox.zip
泽林博客,感谢您的支持!
文章评论
很入门