Node.js 学习笔记

1.fs操作 

// 导入模块
const fs=require('fs')
// 调用用方法读文件
// 用./的相对路径可能会出现路径动态拼接失败 加入绝对路径就行
//  fs.readFile('./file','utf-8',function(err,dataStr){
//     console.log(err)
//     console.log('=======')
//     console.log(dataStr)
//  })
fs.readFile('./file','utf-8',function(err,dataStr){
    if(err){
        return console.log('读取失败'+err)
    }
    console.log('读取成功')
})

const fs=require('fs')
// _dirname表示当前文件所处目录
console.log(__dirname)

fs.readFile(__dirname+'1.txt','utf-8',function(err,datasrc){
    if(err){
        console.log('文件读取失败'+err.message)
    }
    console.log('读取成功')
})


// 写文件
fs.writeFile('./file','abc','utf-8',function(err){
    if(err){
        console.log('写入失败'+err)
    }
    console.log('写入成功')
})
const fs=require('fs')
fs.readFile('./file','utf-8',function(err,datastc){
    if(err){
    return  console.log('读取失败'+err)
    }   
    const arrOld=datastc.split(' ')
    const newarr=[]
    arrOld.forEach(item =>{
        newarr.push(item.replace('=',':'))
    })
    console.log(newarr)

    fs.writeFile('./file',newarr,function(err){
        if(err){
            return console.log('写入文件失败'+err.message)
        }
        console.log('写入成功')
    })
})

拼接路径path.join 

const fs=require('fs')
// _dirname表示当前文件所处目录
console.log(__dirname)

fs.readFile(__dirname+'1.txt','utf-8',function(err,datasrc){
    if(err){
        console.log('文件读取失败'+err.message)
    }
    console.log('读取成功')
})

const path=require('path')
// ../会取消前一层路径
path.join('/a','/b/c','../','./d')
fs.readFile(path.join(__dirname,'/file.txt'),'utf-8',function(err,datasrc){
    if(err){
        return console.log('读取错误'+err.message)
    }
    console.log(datasrc)
})

不要 or 要  拓展名

var pathname='a/b/c/index.html'
var fullname=path.basename(pathname)
console.log(fullname)
// 不要拓展名
const namewithoutext=path.basename(fullname,'.html')
console.log(namewithoutext)
// 只要拓展名
const nameext=path.extname(fullname)
console.log(nameext)

fs path的综合 案例 从一个文件中读取js html css

const fs=require('fs')
const path=require('path')
// 用正则表达式匹配Style
const regSytle=/<style>[\s\S]*<\/style>/
// 用正则表达式匹配script
const ergScript=/<script>[\s\S]*<\/script>/
// 正则处理html 
const regHTML=/<script>[\s\S]*<\/script>/
fs.readFile(path.join(__dirname,'../素材/index.html'),'utf-8',function(error,datamessage){
 if(error){
     return console.log('读取失败'+error.message)
 }
 resolveCSS(datamessage)
})

// 定义css样式方法
function resolveCSS(htmlSrc){
    // 用正则提取相应内容
    const r1=regSytle.exec(htmlSrc)
    // 提取出来的内容用键值对替换
    const newcss=r1[0].replace('<style>','').replace('</style>','')
    console.log(newcss)
    // 调用wirtefile 写入css
    fs.writeFile(path.join(__dirname,'./clock/index.css'),newcss,function(err){
        if(err){
            return console.log('写入css失败'+err.message)
        }
        console.log('写入成功!')
    })
}
// 定义script样式方法
function resolveJS(jsSrc){
    const r1=ergScript.exec(jsSrc)
    const newjs=r1=[0].replace('<script>','').replace('</script>','')
    console.log(newjs)
    fs.writeFile(path.join(__dirname,'./clock/index.js'),newjs,function(err){
        if(err) {
            return console.log('写入失败'+err.message)
        }
        console.log('写入成功')
    })
}
// 处理html文件
function resolveHTML(htmlSrc){
    const newhtml=htmlSrc.replace(regSytle,'<link rel="stylesheet" href="./index.css"/').replace(ergScript,'<script src="./index.js"></script>')
    // 写入文件
    fs.writeFile(path.join(__dirname,'./clock/index.html'),newhtml,function(err){
        if(err) return console.log('写入失败'+err.message)
        console.log('写入成功')
    })
}

HTTP模块

// 导入模块
const http=require('http')
// 创建web实例
const server=http.createServer()
// 绑定request事件设置监听
// server.on('request',function(req,res){
//     console.log('Someone visit our web server')
// })
// req 请求对象 res 相应对象
server.on('request', (req,res) =>{
    const url=req.url
    const method=req.method

    // 写死页面路径
    let Content='<h1>404 not found !</h1>'
    if(url==='/'||url==='index.html'){
        content='<h1>首页</h1>'
    }else if(url==='/about.html'){
        content='<h1>关羽</h1>'
    }

    const str='your request url is ${url} and request method is ${method}'
    console.log(str)
    // 调用res
    res.end(str)
    // 设置响应头 防止乱码
    const s1='好耶'
    res.setHeader('Content-Type','text/html;charset=utf-8')
    res.end(s1)
})

server.listen(80,function(){
    console.log('server running at 127.0.0.1')
})
//以上实例


const http=require('http')
const fs=require('fs')
const path=require('path')

// 创建web服务器
const server=http.createServer()
// 监听request对象
server.on('request',(req,res)=>{
    // 获取客户端请求的url地址
    const url=req.url

    // 优化请求
    let fpath=''
    if(url==='/'){
    fpath=path.join(__dirname,'/clock.html')
    }
    else{
        fpath= path.join(__dirname,'/clock',url)
    }

    // 请求的URL地址映射为具体文件的存放路径
    path.join(__dirname,url)
    // 根据映射读取文件内容
    fs.readFile(fpath,'utf-8',(err,datasrc)=>{
        if(err) return res.end('404 not found')
        res.end
    })

})
// 启动服务器
server.listen(80,()=>{
    console.log('server running on port 80')
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值