node.js简单了解
node.js是一个软件,它是js的代码运行环境,可以运行js代码然后实现服务器的功能;node.js的开发是模块化开发的思想。
在下载配置好node.js后,我们直接就可编写js文件代码在终端中运行(注意要进入文件所在的文件夹),在终端输入的格式:
node 文件名.js
解析:node就是去环境变量中找到这个node变量指向的软件,然后用node.exe这个软件去运行这个js文件。
学习http模块
想要实现服务器的功能,就离不开http模块,它是node自带的模块,这个模块有一个函数可以创建服务器。
这里有一个新知识,require()方法导入模块,与ES6的导入Import相似。
话不多说,先写代码:
//导入模块
const http=require("http")
//创建服务器,客户端每访问一次服务器,这个函数就执行一次
var app=http.createServer((req,res)=>{
if(req.url=="index"){ //req.url为浏览器地址栏输入的ip地址后的字段
//配置返回给客户端数据包的数据格式和编码类型
res.setHeader("content-Type","text/html;charset=utf8")
//给客户端最后发送一次数据,发送完就断开连接
res.end("你访问了这个服务器")
}else{
res.end(not404)
}
})
//监听
app.listen(8088)//8088为选择访问这个服务器的端口号
到此一个简单的服务器就搭建完成了,还未介绍createServer()方法中回调函数的两个参数,相信大家有点不清楚。
req:客户端向服务器端发送的数据包
res:服务器端向客户端发送的数据包
我们打开终端运行一下这个js文件,在浏览器地址栏输入localhost:8088/index ,就可以得到服务器返回的数据。如果ip地址后面的输入的不是index网址,就会返回404。
现在我们实现了简单的搭建一个服务器,那么我们加大一点难度,引入fs模块读取本地内容。
这里我们只用fs.readFile()方法,他有两个参数,第一个参数为读取文件的路径;第二个参数为回调函数,回调函数里又有两个参数(err,data)。
err代表读取失败的结果;data则代表读取成功的结果,没有数据时为undefiend。
完善代码:
const http=require("http")
const fs=require("fs")
//创建服务器
var app=http.createServer((req,res)=>{
if(req.url=="/index"){
//读取文件同文件下的图片
fs.readFile("./dog1.ong",(err,data)=>{
if(!err){//err为空时执行
res.setHeader("content-Type","image/png")
res.end(data)
}
})
}else{
res.end("not404")
}
})
//监听端口
app.listen(8080)
运行代码,网址输入index就可以看到我们读取到的图片。
这里进行了服务器的搭建和文件的读取,取得是一张图片,既然是读取文件那肯定还可以读取其他类型的文件,接下来就该大家试一下了。
注意:不同的类型,在服务器传数据给客户端时,在setHeader中要设置相应的数据格式,才能够在浏览器正常显示。