fs - file system
- node 内置的一个模块
- 里面存放的都是操作文件相关的方法
- 使用的时候不需要自己定义,但是需要导入
const fs = require('fs')
-
readFile()
- 异步读取文件
- 语法: readFile( 路径, 格式, 回调函数)
- 路径:要读取的文件路径
- 格式:读取文件是默认 buffer 格式的文件
- 可以选填 utf8
- 回调函数:读取成功后执行的回调函数
fs.readFile('./a.txt','utf8', function(err,data) { if(err) return console.log(err) console.log('Loading finished') console.log(data) })
-
readFileSync()
- 同步读取文件
- 无法吸收错误 遇到错误直接报错
- 语法: readFileSync( 路径, 格式)
- 返回值: 就是读取到的 value
const res = fs.readFileSync('./a.txt','utf8')
- 同步读取文件
-
writeFile()
- 异步写入文件
- 语法: writeFile(路径, 内容, 回调函数)
- 路径: 如果路径存在, 直接写入, 如果路径不存在, 创建一个文件写入
- 内容: 你要写入文件内的内容
- 会点函数: 必须写
- 注意: 完全覆盖式的写入
fs.writeFile('./a.txt', 'hello world', ()=>{ console.log('写入内容完成') })
-
writeFileSync()
- 同步写入
- 语法: writeFileSync(路径, 内容)
fs.writeFileSync('./b.txt','你好 世界')
path 内置模块
-
操作和路径相关的内容
-
一个内置模块,直接导入就可以使用
-
extname()
- 专门获取一个路径中的后缀名
- 语法: path.extname(‘文件名’)
const path = require('path') const res = path.extname('abc.html') console.log(res) // .html
-
isAbsolute()
- 判定是不是绝对路径
- 语法:path.isAbsolute(‘路径地址’)
//路径表示方法 test.js 同级目录下 ./test.js 同级目录下 ../test.js 上一级目录下 /test.js 根目录下的 哪一个盘 const res = path.isAbsolute('/test') console.log(res)// true
- 相对路径和绝对路径
- 从根目录触发叫绝对路径
- 和当前目录有关系的路径, 叫做相对路径
-
join()
- 多个参数直接拼成相对路径
- 语法: path.join(‘address1’, ‘address2’, ‘address3’)
const res = path.join('/a','/b','/c'.'./d') console.log(res) // /a/b/c/d const res = path.join('/a','/b','/c'.'./d','../e') console.log(res) // /a/b/c/e // ../
-
resolve()
- 多个参数直接拼成绝对路径
- 语法: path.resolve(‘address1’, ‘address2’, ‘address3’)
const res = path.resolve('./a') console.log(res) // D:\Blog\Notes\JavaScript\a const res = path.resolve('./a','b') //D:\Blog\Notes\JavaScript\a\b const res = path.resolve('./a','b','../c') // D:\Blog\Notes\JavaScript\a\c const res = path.resolve('./a','b','../c','/d') // D:\d
-
parse()
- 解析一个路径, 成为一个对象
- 语法: path.parse()
- 返回值: 一个对象, 里面包含地址的所有信息
const res = path.parse( 'D:\Blog\Notes\JavaScript\a\c\a.js') console.log(res) { root:'E:/', dir:'D:\Blog\Notes\JavaScript\a\c', base:'a.js', ext:'js', name:'a' }
url 内置模块
-
专门操作 url 地址的模块
-
直接引入使用
-
parse()
- 解析 url 地址
- 语法: url.parse(url地址[, 是否解析query]) 默认false
- 返回值: 一个对象, 包含整个 url 地址的所有信息
const url = require('url') const str = 'https://www.immigration.govt.nz/a/b/c?a=200&b=300&c=300#abc' const res = url.parse(str) // res { protocol: 'https:', slashes:'true', host: 'www.immigration.govt.nz:8080', port:'8080', hostname:'www.immigration.govt.nz', hash:'#abc', search:'?a=100&b=200&c=300', query:'a=100&b=200&c=300', pathname='a/b/c', path:'/a/b/c?a=200&b=300&c=300', href:'https://www.immigration.govt.nz/a/b/c?a=200&b=300&c=300#abc' } const res = url.parse(str) //res { protocol: 'https:', slashes:'true', host: 'www.immigration.govt.nz:8080', port:'8080', hostname:'www.immigration.govt.nz', hash:'#abc', search:'?a=100&b=200&c=300', query:{a:'100',b:'200',c:'300'}, pathname='a/b/c', path:'/a/b/c?a=200&b=300&c=300', href:'https://www.immigration.govt.nz/a/b/c?a=200&b=300&c=300#abc' }
http 内置模块
-
专门进行 http 服务的协议
-
也是一个内置模块, 直接导入使用
-
createServer()
- 专门用来创建 http 服务的方法
- 语法: http.createServer(函数)
- 返回值: 一个 http 服务
-
listen()
- 监听某一个端口使用的方法
- 语法: 服务.listen(端口号, 回调函数)
-
当监听端口号完毕的时候
- 再 cmd 里面运行起来这段代码
- cmd 窗口就因为这段代码变成了一个服务器
- 此时客户端请求 localhost:8080 的时候
- 每一个请求都会触发一次 createServer 的参数函数
- 这个函数接收两个参数
- request: 本次请求的所有请求信息
- 服务器解析完请求报文后组装的内容
- 需要从请求报文里获取什么信息
- 直接再 request 里面找
- response: 将来组装成响应报文的东西
- 想要再响应报文里添加什么
- 就往这个response 里面的指定位置添加
- request: 本次请求的所有请求信息
const http = require('http') const server = http.createServer(function (req,res){ console.log(req.url) // 请求的path // localhost:8080/a/b/c 输出 /a/b/c //localhost:8080/index.html 输出 index.html res.end('hello world') // 响应体 解析 url 并 返回对应的 响应体 }) server.listen(8080, ()=> console.log('server running at port 8080!'))