fs模块是和node.js一起下载安装的一个全局模块。
调用fs.readFile()方法来读取文件内容:第一步: 创建一个js文件导入fs模块,来 *** 作文件。
第二步: 调用fs.readFile()方法读取文件
fs.readFile(path[,options],callback)
注释:
( 1.中括号里可选参数,表示以什么编码格式读取文件
2.path表示文件路径
3.callback表示回调函数拿到结果)
//参数一 读取文件的路径。
//参数二: 读取文件时候采用的编码格式,默认”utf8“。
//参数三: 回调函数返回成功还是失败的结果err和dtaStr。
代码示例:
//导入fs模块,来 *** 作文件
const fs = require('fs')
//调用fs.readFile()方法读取文件
//参数一:读取文件的路径
//参数二:读取文件时候采用的编码格式,默认”utf8“
//参数三:回调函数返回成功还是失败的结果err和dtaStr
fs.readFile('../node01/test.txt','utf8',function(err,dtaStr){
//读取信息失败
if(err){
return console.log('读取信息失败>>>',err);
}
//读取信息成功
console.log('读取信息成功>>>',dtaStr)
})
})
//当前文件夹下有一个test.txt,里面有内容hello worle
//结果null
// hello worle
在自己创建的文件夹内空白处按住SHIFT键右键按下PowerShell窗口选项来执行js代码。
调用fs.writeFile()方法,写入文件的内容:第一步: 创建一个js文件导入fs模块,来 *** 作文件。
第二步: 调用fs.writeFile()方法,写入文件的内容
fs.writeFile(file,data[,options],callback)
注释:
1.file文件路径,data内容,options编码格式,callback返回结果。
2.fs.writeFile()不能重写路径,但可以重写文件,意思是在当前文件夹下如果没有该文件,就自己写文件,如果有就向文件写入内容。
3.fs.writeFile()被多次写入内容不会报错,新的内容会覆盖旧的内容。
//参数一 文件的存放路径。
//参数二: 写入想要的文件内容。
//参数三: 回调函数。
代码示例:
//引入fs文件系统模块
const fs=require('fs')
//调用fs.writeFile()方法,写入文件的内容
//参数一:文件的存放路径
//参数二:写入想要的文件内容
//参数三:回调函数
fs.writeFile('../node01/02test.txt','学学习',function(err){
if(err){
return console.log('创建失败>>>'+err.message);
}
console.log('写入成功>>>')
})
//写入成功02test.txt的内容为学学习
注释:
写入成功后,被写入文件的会有写入的内容,否则返回的是错误对象。
成绩.txt中的内容为 猪油仔=89 燕子=90 地沟油=80 下水道=99
//导入模块
const fs = require('fs')
//调用fs.readFile()读取文件内容
fs.readFile('../练习/素材/成绩.txt', 'utf8', function (err, dataStr) {
if (err) {
console.log('读取失败>>>' + err.message);
}
// console.log('读取成功>>>'+dataStr);
//先分割数组
const arrOld = dataStr.split(' ')
//循环数组,然后对每一项的等号进行替换
const arrNew = []
arrOld.forEach(item => {
arrNew.push(item.replace('=', ':'))
})
//把数组的每一项进行合并,组成一个字符串
const nowStr = arrNew.join('\r\n')
//用fs.writeFile()方法,把处理完毕的成绩,写到新文件中
fs.writeFile('../练习/素材/成绩-01.txt', nowStr, function (err) {
if (err) {
console.log('创建失败>>>' + err.message);
}
console.log('创建成功>>>');
})
})
//结果为
//猪油仔:89
//燕子:90
//地沟油:80
//下水道:99
path路径模块
第一步: 先引入内部模块const path=require(‘path’).
第二步: 将多个路径片段拼接成一个完整的路径path.join()
const pathStr=path.join(‘/a’,‘/b’,‘…/’,‘/c’)
//结果\a\c
注: …/会抵消到上一个相邻位置
const pathStr=path.join(__dirname,‘./test.txt’)
//当前目录下的test.txt文件
代码示例:
const route='/a/b/c/test.js'
let textName=path.basename(route)
console.log(textName)
//结果test.js
let name=path.basename(route,'.js')
console.log(name)
//结果test
获取文件扩展名
代码示例:
const route='/a/b/c/test.js'
let extName=path.extname(route)
console.log(extName)
//结果.js
结合fs.readFile和fs.writeFile方法加上patn.join拼接路径来举例:
示例:提取一个html文件,将css样式、js脚本和HTML标签分离出来,并将其改为外联式后重新存储
//导入fs模块
const fs = require('fs')
//导入path模块
const path = require('path')
//利用正则表达式,分别匹配和
const regStyle = /', '')
//使用fs.writeFile()方法,将提取出来的css样式写入modular文件夹下的index.css中
fs.writeFile(path.join(__dirname, './modular/index.css'), newCss, function (err) {
if (err) {
return console.log('写入css样式失败' + err.message);
}
console.log('写入css样式成功');
})
}
//定义一个处理js脚本的方法
function resolveJs(htmlStr) {
//使用正则提取需要的内容
const r2 = regScript.exec(htmlStr)
//将提取出来的样式字符串,进行字符串的replace操作
const newJs = r2[0].replace('', '')
//使用fs.writeFile()方法,将提取出来的js脚本写入modular文件夹下的index.js中
fs.writeFile(path.join(__dirname, './modular/index.js'), newJs, (err) => {
if (err) {
return console.log('写入javaScript脚本失败' + err.message);
}
console.log('写入avaScript脚本成功');
})
}
//定义一个处理html的方法
function resolveHtml(htmlStr) {
//使用字符串的replace方法将内嵌的style和script替换为link外联式
const newHtml = htmlStr.replace(regStyle, '').
replace(regScript, '')
//使用fs.writeFile()方法,将提取出来的html脚本写入modular文件夹下的index.html中
fs.writeFile(path.join(__dirname, './modular/index.html'), newHtml, (err) => {
if (err) {
return console.log('写入htmlm成功' + err.message);
}
console.log('写入html成功');
})
}
http网络模块
网络基础知识
1.ip地址互联网中每一台WEB服务器都要自己的唯一ip地址。(通过ip地址访问服务器,用于测试的ip地址127.0.0.1)
2.域名和域名服务器由于ip地址太长并且没有语义化,就出现了域名这种替代ip的访问方式类似于baidu.com,域名服务器就是将域名和ip两者进行互换。
3.端口号一台服务器上有成千上百个服务,每个端口号对应一个服务。
注:
80端口号在js编辑时可以省略。
(1).首先调用http内置内置模块require(‘http’)
(2).创建WEB服务http.createServer()
(3).监听服务server.listen()
代码示例:
//导入http模块
const http=require('http')
//创建基本的web服务器
const server=http.createServer()
//为服务器实例绑定request事件,监听客户端的请求
server.on('request',(req,res)=>{
console.log('服务器响应成功>>>')
})
//启动服务器
server.listen(8080,()=>{
console.log('server running at http://127.0.0.1:8080')
})
WEB服务器的两个对象
1.req请求对象包含与客户端相关的数据和属性.
(req.url客户端请求的地址)
(req.method客户端请求的方法类型)
2.res响应对象,向客户端传输内容.
(res.end像客户端响应内容)
代码示例:
const http = require('http')
const server = http.createServer()
//req是请求对象,包含了与客户端相关的数据和属性
server.on('request', (req,res) => {
//req.url是客户端请求的URL地址
const url = req.url
//req.method是客户端请求的method类型
const method = req.method
const str = `yous request url is ${url}.your request method is ${method}`
//使用res.end()方法,像客户端响应内容。
res.end(str)
console.log(str);
})
//启动服务器
server.listen(80, () => {
console.log('server request gt http://127.0.0.1');
})
解决中文乱码问题
调用res.setHeader()方法,设置Content-Type 响应头,解决中文乱码的问题。
res.setHeader(‘Content-Type’,‘text/html;charset=utf-8’)
代码示例:
const http=require('http')
const server =http.createServer()
server.on('request',(req,res)=>{
//定义一个字符串,包含中文的内容
const str=`您请求的 url 地址是 ${req.url}.请求的 method 类型是 ${req.method}`
//调用res.setHeader()方法,设置Content-Type 响应头,解决中文乱码的问题
res.setHeader('Content-Type','text/html;charset=utf-8')
//将内容返回给客户端
res.end(str)
})
//启动服务端
server.listen(80,()=>{
console.log('server request gt http://127.0.0.1');
})
根据不同的url地址响应不同的html内容
获取请求的url地址设置默认响应内容为404 Not found判断用户的请求防止乱码使用res.end()将内容给客户端代码示例:
const http=require('http')
const server=http.createServer()
server.on('request',(req,res)=>{
//1.获取请求的地址url
const url=req.url
//2.设置默认响应的内容404 Not found
let content='404 Not found'
//3.判断用户请求是否为/或者/iindexx.htmml 主页
//4.判断用户请求是否为/about.html 关于页面
if(url==='/'||url==='/index.html'){
content='首页'
}else if(url==='/about.html'){
content='关于页面'
}
//调用res.setHeader()方法,设置Content-Type 响应头,解决中文乱码的问题
res.setHeader('Content-Type','text/html;charset=utf-8')
//将内容返回给客户端
res.end(content)
})
//启动服务端
server.listen(80,()=>{
console.log('server request gt http://127.0.0.1');
})
结合fs、path模块和WEB服务器来实现当客户端输入不同访问地址显示不同的页面
代码示例:
//导入fs模块
const fs = require('fs')
//导入path模块
const path = require('path')
//导入http模块
const http = require('http')
//创建web服务器
const server = http.createServer()
//监听wed的request事件
server.on('request', (req, red) => {
//获取到客户端请求的 URL 地址
// /modular/index.css
// /modular/index.js
// /modular/index.html
const url = req.url
//把请求的 ULR 地址映射为具体文件的存放路径
//优化路径 *** 作
//定义一个空的fpath
let fpath=''
if(url==='/'){
fpath=path.join(__dirname,'/modular/index.html')
}else{
fpath=path.join(__dirname,'/modular',url)
}
// const fpath = path.join(__dirname, url)
//根据“映射”过来的文件路径,读取文件的内容
fs.readFile(fpath,'utf8',(err,dataStr)=>{
//读取失败返回固定的错误消息
if(err){
return red.end('404 Not found')
}
//读取文件成功返回读取的文件信息
red.end(dataStr)
})
})
//启动服务端事件
server.listen(80, () => {
console.log('server request gt http://127.0.0.1');
})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)