Node学习笔记

1|0path,url模块使用

var http = require('http'); var url = require('url') http.createServer((req, res) => { //设置请求头信息 res.writeHead(200, { "Content-Type": "text/html;charset='utf-8'" }) console.log(req.url) if (req.url != '/favicon.ico') { //获取请求参数 var userInfo = url.parse(req.url, true).query console.log(userInfo) } res.end("hello node.js") }).listen(8081) console.log('Server running at http://127.0.0.1:8081/');

2|0supervisor工具使用

supervisor会不停的watch应用下的所有文件,发现文件被修改,就会重新载入程序文件这样实现了部署,修改了程序文件后就能马上看到变更后的效果。

1|0安装supervisor

cnpm install -g supervisor

1|0使用supervisor代替node命令

image-20211024164703667

3|0Nodejs模块、自定义模块

1|0什么是Commonjs?

Commonjs规范的提出,主要是为了弥补当前JavaScript没有标准库的缺陷。它的终极目标就是:提供一个类似Python.Ruby和java语言的标准库。

Commonjs就是模块化的标准,Nodejs就是Commonjs(模块化)的实现

4|0Nodejs中fs模块

模块 作用
fs.stat 检测是文件还是目录
fs.mkdir 创建目录
fs.writeFile 创建写入文件
fs.appendFile 追加文件
fs.readFile 读取文件
fs.readdir 读取目录
fs.rename 重命名
fs.rmdir 删除目录
fs.unlink 删除文件

fs.stat

var fs = require('fs') fs.stat('./html', (err, data) => { if (err) { console.log(err) return } console.log(`目录${data.isDirectory()}`) console.log(`文件${data.isFile()}`) })

image-20211024174230174

fs.mkdir

var fs = require('fs') /* path 将创建的目录路径 mode 目录权限(读取权限),默认777 callback 回调,传递异常参数err */ fs.mkdir('./css', (err) => { if (err) { console.log(err) return } console.log('创建成功') })

image-20211024174612070

fs.writeFile

var fs = require('fs') /* filename (string) 文件名称 data (string|Buffer) 将要写入的内容,可以使用字符串或者buffer数据 options (object) option数组对象,包含: ·encoding (string) 可选值,默认 ’utf-‘ ,当data使用buffer时,该值为 `mode (Number) 文件读写权限,默认值 438 `flag (string) 默认值 'w' · callback {function} 回调,传递一个异常参数err */ fs.writeFile('./html/index.html', 'node.js', (err) => { if (err) { console.log(err) return } console.log('创建写入文件成功') })

fs.appendFile

var fs = require('fs') fs.appendFile('./css/base.css', 'body{color:red}\n', (err) => { if (err) { console.log(err) return } console.log('追加文件成功') })
fs.appendFile('./css/base.css', 'h2{color:blue}\n', (err) => { if (err) { console.log(err) return } console.log('追加文件成功') })

fs.readFile

var fs = require('fs') fs.readFile('./html/index.html', (err, data) => { if (err) { console.log(err) return } console.log(data) console.log(data.toString()) })

fs.readdir

var fs = require('fs') fs.readdir('./html', (err, data) => { if (err) { console.log(err) return } console.log(data) })

image-20211024180629780

fs.rename

var fs = require('fs') /* 1.重命名 2.移动文件 */ fs.rename('./css/base.css', './css/index.css', (err) => { if (err) { console.log(err) return } console.log('重命名成功!') })

将css->index.css移动到html->index.css

fs.rename('./css/index.css', './html/index.css', (err) => { if (err) { console.log(err) return } console.log('移动文件成功') })

fs.unlink

fs.unlink('./css/index.css', (err) => { if (err) { console.log(err) return } console.log('删除文件成功') })

先要将目录里的文件删除才可以删除目录

fs.rmdir

var fs = require('fs') fs.rmdir('./css', (err) => { if (err) { console.log(err) return } console.log('删除目录成功') })

1|0fs模块练习

//1.判断服务器上面有没有upload目录。如果没有创建这个目录,如果有不做操作(上传图片) var fs = require('fs') var path = './upload' fs.stat(path, (err, data) => { if (err) { //执行创建目录 mkdir(path) } if (data.isDirectory()) { console.log('upload目录存在') } else { //先删除在执行创建目录 fs.unlink(path, (err) => { if (!err) { mkdir(path) } else { console.log('请检查传入的数据是否正确') } }) } }) //创建目录函数 function mkdir(dir) { fs.mkdir(dir, (err) => { if (err) { console.log(err) return } }) }

mkdirp包使用

/**https://www.npmjs.com/package/mkdirp * * cnpm install mkdirp * * const mkdirp = require('mkdirp') */ const mkdirp = require('mkdirp') mkdirp('./upload').then(err => { if (err) { console.log(err) return } }) //直接创建 mkdirp('./uploadDir') //创建多个目录 mkdirp('./upload/aaa/xxxx').then(err => { if (err) { console.log(err) return } })

image-20211024184342591

//2.wwwroot文件下面有images css js 以及 index.html ,找出wwwroot目录下所有文件 // ,然后把目录放在一个数组 const fs = require('fs') var path = './wwwroot' var dirArr = [] fs.readdir(path, (err, data) => { if (err) { console.log(err) return } (function getDir(i) { if (i == data.length) { console.log(dirArr) return } fs.stat(path + '/' + data[i], (err, stats) => { if (stats.isDirectory()) { dirArr.push(data[i]) } getDir(i + 1) }) })(0) })

1|0使用async和await

//1.定义一个isDir的方法判断一个资源到底是文件还是目录 var fs = require('fs') async function isDir(path) { return new Promise((resolve, reject) => { fs.stat(path, (err, stats) => { if (err) { console.log(err) reject(err) return } if (stats.isDirectory()) { resolve(true) } else { resolve(false) } }) }) } //2.获取wwwroot里面的所有资源 循环遍历 function main() { var path = './wwwroot' var dirArr = [] fs.readdir(path, async (err, files) => { if (err) { console.log(err) return } for (let i = 0; i < files.length; i++) { if (await isDir(path + '/' + files[i])) { dirArr.push(files[i]) } } console.log(dirArr) }) } main()

1|0fs的流以及管道流

读取流

var fs = require('fs') let readStream = fs.createReadStream('./text.txt') var count = 0 var str = "" readStream.on('data', data => { str += data count++ }) readStream.on('end', data => { console.log(str) console.log(count) }) readStream.on('error', error => { console.log(error) })

写入流

var fs = require('fs') var data = "" for (let i = 0; i <= 500; i++) { data += "我是数据000000000000000000000000000000000\n" } var writeStream = fs.createWriteStream('./text.txt') writeStream.write(data) //标记写入完成 writeStream.end() writeStream.on('finish', () => { console.log('写入完成') })

管道流

var fs = require('fs') //管道流 var readStream = fs.createReadStream('./aaa.jpg') var writeStream = fs.createWriteStream('./data/aaa.jpg') readStream.pipe(writeStream)

__EOF__

本文作者寻找小糖人
本文链接https://www.cnblogs.com/ShihaoHuang/p/15819649.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   awsoyou  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示