node学习笔记

1 篇文章 0 订阅

git

个人note学习笔记及资源

介绍

个人nodejs学习笔记

软件架构

node版本 v14.16.1

内置模块

使用时需要通过require引入对应的模块

1.fs模块

1.读取文件,通过readFile读取文件
   const fs = reuqire('fs')
   // path:读取的文件路劲
   // option:读取的文件编码格式,默认utf8
   // fn: 回调函数 
   	// err: 读取成功返回null,读取失败返回错误对象
   	// dataStr: 读取成功返回文件内容,失败返回undefined
   fs.readFile(path[,option],function(err,dataStr){})
   
   fs.readFile('./Files/index.html', 'utf8' ,function(err,dataStr) {
     if (err) {
       return console.log('文件读取失败' + err.message)
     }
     console.log('文件读取成功' + dataStr)
   })
2.写入文件,通过writeFile写入文件
const fs = reuqire('fs')
//path: 文件路径
//data: 写入内容
//option: 文件编码格式,默认utf8
//callback: 回调,err同读取
fs.wirteFile(path,data[,option],function(err){})

注意:写入文件时如果文件不存在会自动创建,如果文件夹不存在会报错

   fs.writeFile('./Files/index.txt','123456','utf8', function(err) {
     if (err) {
       return console.log('文件写入失败' + err.message)
     }
     console.log('文件写入成功')
   })
3.小练习-整理成绩
  1. 创建一个成绩.txt,内容:小红=90 小白=100 小绿=66 小黑=70 小黄=88

  2. 整理后生成一个成绩-ok.txt,内容:

    小红:90
    小白:100
    小绿:66
    小黑:70
    小黄:88

   function clearUpResult() {
    fs.readFile('./Files/成绩.txt','utf8',function(err,dataStr) {
        if (err) {
          fs.writeFile('./Files/成绩.txt', '小红=90 小白=100 小绿=66 小黑=70 小黄=88', function(err) {
            if (err) {
              return console.log('写入失败' + err.msg)
            } else {
              console.log('文件创建成功开始整理成绩')
              clearUpResult()
            }
          })
        } else {
          const str = dataStr.split(' ').map(el => el.replace('=', ':')).join('\r\n')
          fs.writeFile('./Files/成绩-ok.txt', str, function(err) {
            if (err) {
              return console.log('整理成绩,写入失败' + err.msg)
            }
            console.log('整理成绩成功' + path.join(__dirname, './Files/成绩-ok.txt'))
          })
        }
    })
}

path内置模块处理路径

path.join(__dirname,‘xxx/xxx’) 拼接路径

path.basename(‘xxx/xxx/xxx.html’) 返回路径的文件名 xxx.html

path.extname(‘xxx/xxx/xxx.txt’) 返回路径中的扩展名 .html

__dirname指的是当前文件所在文件夹的绝对路径

4.小练习-分离html,css,js文件

目标:讲html,css,js中文件中分离成单独的css、js、html文件

   <!DOCTYPE html>
   <html lang="en">
   
   <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <link rel="stylesheet" href="">
     <style>
       * {
         margin: 0;
         padding: 0;
       }
   
       html,
       body {
         height: 100vh;
         background-color: skyblue;
       }
   
       div {
         width: 100px;
         height: 100px;
         background: red;
         position: relative;
         animation: mymove 5s infinite;
         -webkit-animation: mymove 5s infinite;
         /*Safari and Chrome*/
       }
   
       @keyframes mymove {
         from {
           left: 0px;
         }
   
         to {
           left: 200px;
         }
       }
   
       @-webkit-keyframes mymove
   
       /*Safari and Chrome*/
         {
         from {
           left: 0px;
         }
   
         to {
           left: 200px;
         }
       }
     </style>
   </head>
   
   <body>
     <p><strong>注释:</strong>Internet Explorer 9 以及更早的版本不支持 animation 属性。</p>
   
     <div></div>
   </body>
   <script>
     let i = 0
     setInterval(()=> {
       console.log(i++)
     },1000)
   </script>
   </html>
   const fs = reuqire('fs')
   
   // 创建匹配style和script标签内容的正则\
   // \s匹配空字符,\S匹配非空字符 *匹配多次
   const reqStyle = /<style>[\s\S]*<\/style>/
   const reqScript = /<script>[\s\S]*<\/script>/
   
   // 读取目标html文件
   fs.readFile(path.join(__dirname, './index.html'),'utf8', function(err,dataStr) {
       if (err) {
           return console.log('目标index.html文件读取失败' + err.message)
       }
       resloveCss(dataStr)
       resloveJS(dataStr)
       resloveCss(dataStr)
   })
   
   function resloveCss(htmlStr) {
    	//匹配style内的内容
    const [r] = htmlStr.exec(reqStyle)
    	// 去除首尾style标签
       const newStr = r.replace(/<style>|<\/style>/g,'')
    	// 写入index.css文件中
       fs.writeFile(path.join(__dirname, './index.css'),newStr,functoin(err) {
       	if (err) {
           	return console.log('写入css文件失败' + err.message)
       	}
       })
   }
   function resloveJS(htmlStr) {
    	//匹配style内的内容
       const [r] = htmlStr.exec(reqScript)
    	// 去除首尾style标签
       const newStr = r.replace(/<script>|<\/script>/g,'')
    	// 写入index.css文件中
       fs.writeFile(path.join(__dirname, './index.js'),newStr,functoin(err) {
       	if (err) {
           	return console.log('写入js文件失败' + err.message)
       	}
       })
   }
   
   function resloveHTML(htmlStr) {
    	//清楚style和js  写入外联link和script
       const newStr = htmlStr.replace(reqStyle,'<link ref="styleheet" href="./index.css"/>')
       					  .replace(reqScript, '<script src="./index.js"></script>')
       // 写入html
       fs.writeFile(path.join(__dirname, './index.html'), newStr,functoin(err) {
       	if (err) {
           	return console.log('写入html文件失败' + err.message)
       	}
       })
       
   }

2.http

1 . 简单搭建一个web服务
// 引入http模块
const http = require('http')

// 使用createServer创建服务
const server = http.createServer()

// 使用on 绑定请求request事件
server.on('request',(req,res) => {
    console.log(req) // 请求对象,包含了与客户端的数据与属性
    console.log(req.url) // 客户端的请求地址
    console.log(req.methods) // 客户端的请求方式
    
    console.log(res) // 响应对象
    res.end('响应内容') // 向客户端发送指定的内容,并结束这次请求的处理过程
})

// 使用listen开启服务
server.listen(8080,() => {
    console.log('服务启动了,端口号8080')
})
2. 解决中文乱码的问题
// 设置响应头编码格式
res.setHeader('Content-Type', 'text/html;charset=utf-8')
  1. 根据不同的url响应不同的html内容

    核心实现步骤

    1. 获取请求的url地址

    2. 设置·默认的响应内容为404 Not found

    3. 判断用户请求是否为 / 或者 index.html

    4. 判断用户是是否为/about.html关于页面

    5. 设置Content-Type响应头 防止中文乱码

    6. 使用res.end()把内容响应给客户端

const http = require('http')

const server = http.createServer()

server.on('request', (req,res) => {
    const url = req.url
    let content = '<h1>404 Not found</h1>'
    if (url === '/' || url === '/index.html') {
        content = '<h1>首页</h1>'
    } else if (url === '/about.html') {
        content = '<h1>关于页面</h1>'
    }
    res.setHeader('Content-Type', 'text/html;charset=utf-8')

    res.end(content)
})

server.listen(80,() => {
    console.log('服务启动成功,http://127.0.0.1')
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值