一,http模块下的方法
var server = require("http")
var fs = require("fs")
let app = server.createServer(function(req,res) {
res.setHeader("Content-Type","text/html;chartset=utf8")
//请求头消息 请求和实体对应的MIME信息 大类型是文本小类型是html 编码格式
res.writeHead(404,{'Content-Type':'text/html',"chartset":"utf8"})//MIME
//404是状态码 文件的有无 不是状态码决定的
//前端的数据是放在req里面的
//后端向前端发送的数据用res
//req 和res 里面有很多的方法和属性
console.log(1111);
if(req.url == "/index.html"){
//re.url表示的是端口号后面的所有的字符串
fs.readFile("11.html",(err,data)=>{
res.end(data)
})
}
else if(req.url =="/img/1.jpg") {
fs.readFile("./img/1.jpg",(err,data)=>{
res.end(data)
})
}
else if (req.url =="/img/二哈.jpg") {
fs.readFile("./img/二哈.jpg",(err,data)=>{
res.end(data)
})
}
else if (req.url =="/img/3.jpg") {
fs.readFile("./img/3.jpg",(err,data)=>{
res.end(data)
})
}
else if (req.url =="666") {
res.writeHead(404,{'Content-Type':'text/html',"chartset":"utf8"})//MIME
req.write("<html><body><h>你好</h></body></html>")
//也可以分开写入 但是你必须加res.end 表示发送完毕 也可以直接写res.end参数里
res.end()
}
})
app.listen(8081)
1 当程序运行得时候 服务器挂起 用户通过ip地址和程序入口port 进入服务器对应得函数就会被调用
2ip就是每个计算机都有得唯一身份 就像每个人都有唯一得身份证一样 计算机得程序都有对应得io口 port会找到对应得程序入口
3回调函数调用时会传2个对象进来:HTTPRequestMessage(req) HTTPResponseMessage(res)req主要就是前端发送过来的信 res主要就是后端给前端返回的数据 req.url 代表了网址端口号后面的所有字符串
req.method 代表了网络传输数据的方式
二,文件模块
var http = require("http")
var fs = require("fs");
const { dirname } = require("path");
let app = http.createServer((req,res)=>{
console.log(__dirname,__filename);
//__dirname 是操作的window 得到是 目录 的绝对路径
//__filename 是得到的 文件 的绝对路径
}).listen(8888)
fs.readFile(__dirname+"/01.txt",(err,date)=>{
//readFile是异步的方法 不会阻塞线程
//只要文件读取完毕就会执行 那个文件小一般会先返回
console.log(date.toString());
})
var str = "66666666"
fs.writeFile(__dirname+"/01.txt",str,function(err) {
//写入文件
//这样的话 会将文件的内容直接替换掉
console.log(err);
})
// var fs = require("fs")
// var str = "讲完就下课"
// var path = __dirname + "/src/index.html"
// fs.writeFile(path, str,{flag:"a+"},(err) => {
//加个参数就不会替换 而是追加了
// console.log(err)
// })
fs.appendFile(__dirname+"/01.txt","我是appendfile追加的",(er)=>{
//追加文件
console.log(er);
})
fs.unlink(__dirname+"/02.txt",(errr)=>{
//删除文件
console.log(errr);
})
//创建目录
fs.mkdir(__dirname+"/newfile",(er2)=>{
//只可以在有的目录下创建一个 不可以多次创建没有的
console.log(er2);
})
var old = __dirname+"/03.txt"
var newad = __dirname+"/newfile/03.txt"
fs.rename(old,newad,(es)=>{
//移动文件和目录可以更改名字的
console.log(es);
})
fs.readdir(__dirname,(err8,filess)=>{
//读取文件下的所有文件 和文件夹名字 得到是数组
console.log(filess);
})
fs.stat(__dirname,(err5,info)=>{
//检测是不是文件
console.log(info.isDirectory());
})
//修改文件信息
// var fs=require("fs")
// fs.utimes(__dirname+"/src/a.txt",new Date(),new Date(),(err)=>{
// console.log(6666)
// })```
# //nodejs 你是js框架 也不是代码 而是js的一个运行的环境 它的上层js是单线程的语言 下层是c/和c++ 所以js代码借助底层语言提供的接口 所以 可以实现多线程 nodejs特点是模块化 开源的 非阻塞io接口