node.js基础写法
如下代码:
require为引入模块指令 有了模块才具有某些功能
http:createServer为创建网页服务器 回调函数参数 req 与 res :
req:前端回传后端的信息
res:后端发送前端的数据
req.url是网址信息 可以用parse(req.url)把网址信息拆分成pathname querystring hash等部分变成数组
通过parse(req.url).pathname获取路径名
通过if判断用户输入的网址 如/test/home 返回相应的文件
通过fs.readFile读取文件 fs.readFile(("路径"),(err,data)={}) 第一个参数为返回目标文件的路径,第二个参数为回调函数 他的参数分别是err,data err为读取不到文件时返回的 data为读取到的文件
res.end()表示后端最后一次返回给前端的数据 可以写data
res.setHeader()表示判断文件类型 把data转换成第二个参数的类型发送前端
app.listen(8081) 表示端口号
var http=require("http")
var fs=require("fs")
var app=http.createServer((req,res)=>{
console.log(req.url)
//前端的每一次网络请求 这个函数都会重新运行一次
if(req.url=="/test/home"){
fs.readFile("./index.html",(err,data)=>{
//MIME
res.setHeader("content-Type","text/html;charset=utf8")
res.end(data)
})
}
else if(req.url=="/123"){
//MIME
res.setHeader("content-Type","text/html;charset=utf8")
res.end("123")
}
else if(req.url=="/src/18.jpg"){
console.log("访问图片")
//MIME
fs.readFile("./src/18.jpg",(err,data)=>{
res.setHeader("content-Type","image/png")//content-Type 告诉浏览器发送的数据类型 以什么形式解析
console.log(err,data)
res.end(data)
})
}
else{
res.end("404")
}
})
app.listen(8081)
node .js静态托管进阶写法:
如下代码:
在引入了相应模块,启用了网址服务器后:
只需要获取req.url的pathname值
__dirname表示当前文件所在的项目文件
let path=__dirname+"要返回的文件所在的项目文件"+pathname表示 传给用户的文件
用户只需要输入目标文件的名字就能找到这个文件fs.readFile(path,(err,data)
也可以用if 判断用户输入的网址返回各种情况
var url=require("url")
var querystring=require("querystring")
var http=require("http")
var fs=require("fs")
var mime=require("mime")
var app=http.createServer((req,res)=>{
let urlobj=url.parse(req.url)//网址拆分pathname query 这里只有pathname
console.log(urlobj);
let pathname=urlobj.pathname//提取pathname 也就是/qqmusic.html
if(pathname=="/"){pathname="/qqmusic.html"}//如果端口后面没写 就默认pathname等于主页
let path=__dirname+"/req.url"+pathname
fs.readFile(path,(err,data)=>{
if(!err){
let type1=mime.getType(path)//获取文件类型
// console.log(type1);
res.setHeader("content-Type",type1)//设置转换文件类型
res.end(data)
}
else if(pathname=="/login"){
let queryobj=querystring.parse(urlobj.query)//取出网址中的query
console.log(queryobj);
// 把前端传过来的数据 去处理
res.end("hello")
}
else{
res.end("yang zheng yu nig")
}
})
})
app.listen(8888)