nodejs实用方法
coderhyh 10/7/2022 笔记nodejs
# global 全局对象
//global是全局对象,使用它里面的属性或方法或子对象,可以不用加global
global.console.log('你好');
1
2
2
# fs
# 获得文件具体信息(判断是不是文件夹或者文件)
let fs = require('fs');
//异步获取文件的具体信息
fs.stat('./1.text',(err,info)=>{
if (err) {
console.log();
} else{
// info.isFile() 判断是不是一个文件 返回结果为true
console.log(info.isFile());
}
})
fs.stat('./public',(err,info)=>{
if (err) {
console.log();
} else{
// info.isDirectory() 判断是不是一个文件 返回结果为true
console.log(info.isDirectory());
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
使用同步操作的话相对于简单
let file = fs.statSync('./1.text');
if(file.isFile()){
console.log('这是一个文件');
}else if(file.isDirectory()){
console.log('只是一个文件夹');
}else{
console.log('抱歉这不是一个文件或者文件夹');
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 读取文件夹里面的所有文件
let fs = require('fs');
//异步读取文件夹里面的所有文件
fs.readdir('./public',(err,files)=>{
if (err) {
console.log(err);
} else{
// console.log(files); 返回的文件是个数组,可以用forEach循环输出文件名
files.forEach((x)=>{
console.log('有'+ x +'这个文件');
})
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
同步获取文件夹里面的所有文件
let files = fs.readdirSync('./public');
console.log(files); //返回的是一个数组
1
2
2
# 移动并可以重命名文件(剪切)
let fs = require('fs');
//第二个参数如果是目录里面的文件的话他就会把文件移动
//如果单独只是文件名的话他就会把文件重命名
fs.rename('./1.text','./public/index.html',(err,data)=>{
if (err) {
console.log(err);
} else{
console.log('已经移动并更改');
}
})
// 同步操作移动并重命名文件
fs.renameSync('./public/index.html','./index.html');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 复制并重命名文件(复制)
let fs = require('fs');
//异步复制并重命名文件
// fs.copyFile('./1.text','./public/index.html',(err)=>{
// if (err) {
// console.log(err);
// } else{
// console.log('已经复制并移动');
// }
// })
// 同步操作复制并重命名文件
fs.copyFileSync('./index.html','./public/index.html');
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 模块 pipe方法大文件复制
var fs = require('fs');
//创建读取流
var readStream = fs.createReadStream('./1.zip');
//创建写入流
var writeStream = fs.createWriteStream('./2.zip');
//进行大文件的复制
readStream.pipe(writeStream);
1
2
3
4
5
6
7
2
3
4
5
6
7
# 递归删除文件
结合 fs path 模块 递归删除目录
let fs = require('fs');
let path = require('path');
let del = (url)=>{
//获得所有文件
let arr = fs.readdirSync(url);
//循环所有文件
arr.forEach((x)=>{
//组合文件路径
let fileurl = path.resolve(url,x);
//获得文件的详细信息
let xinxi = fs.statSync(fileurl);
// 判断
if(xinxi.isFile()){
fs.unlinkSync(fileurl);//是文件删除
}else if(xinxi.isDirectory()){
del(fileurl);//是文件夹递归调用
}
})
//删除文件夹(如果文件夹里面有文件删除不了)
fs.rmdirSync(url);
}
del(path.resolve(__dirname,'public.1'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 递归打印输出有规则的文件
let fs = require('fs');
let path = require('path');
let del = (url,y=0)=>{
let h = '';
for (var i = 0; i < y; i++) {
h += '---'
}
//打印目录二级以后的目录
console.log(h + url);
//获得所有文件
let arr = fs.readdirSync(url);
//循环所有文件
arr.forEach((x)=>{
//组合文件路径
let fileurl = path.resolve(url,x);
//获得文件的详细信息
let xinxi = fs.statSync(fileurl);
let f ='';
for (let a=0;a<y+1;a++) {
f += '---';
}
//输出的文件为再次加 ---- 个,(看上班for循环 d+1 )
!xinxi.isFile(fileurl) || console.log(f + fileurl);
!xinxi.isDirectory(fileurl) || del(fileurl,y+1);
})
}
del(path.resolve(__dirname,'public.2'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
F:\前端学习\node\public.2
---F:\前端学习\node\public.2\06.js
---F:\前端学习\node\public.2\1.vue
---F:\前端学习\node\public.2\16.json
---F:\前端学习\node\public.2\16.vue
---F:\前端学习\node\public.2\ab
------F:\前端学习\node\public.2\ab\06.js
------F:\前端学习\node\public.2\ab\1.vue
------F:\前端学习\node\public.2\ab\16.json
------F:\前端学习\node\public.2\ab\16.vue
------F:\前端学习\node\public.2\ab\index.html
---F:\前端学习\node\public.2\index.html
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# path
# 模块之将多个路径组合成一个路径
let path = require('path');
let url = path.join('d:/www','/index','/banner/index.php');
console.log(url);
结果为:d:\www\index\banner\index.php
1
2
3
4
5
2
3
4
5
# 模块之判断是不是一个绝对路径
let path = require('path');
let url = path.isAbsolute('c:/www/baidu/public/index');//绝对路径(true)
let url = path.isAbsolute('www/baidu/public/index');//相对路径(false)
console.log(url);
1
2
3
4
2
3
4
# 从后往前组合,组合成第一个绝对路径就停止
let path = require('path');
//从后往前组合,组合成第一个绝对路径就停止
//若直到要第一个参数都组合不出来绝对路径,那么就会连接上当前脚本所在绝对路径,组合成一个完整的绝对路径
let url = path.resolve('c:/www','b:/res','index.php');
console.log(url)
结果为:b:\res\index.php
1
2
3
4
5
6
7
2
3
4
5
6
7
# 返回第二个参数相对于第一个参数的所在路径
let path = require('path');
//返回第二个参数相对于第一个参数的所在路径
let url = path.relative('c:/a/b/c','c:/houdunren/her');
console.log(url)
结果: ..\..\..\houdunren\her
1
2
3
4
5
6
2
3
4
5
6
# 返回的是路径最后一个文件或者文件夹的所在路径
let path = require('path');
//dirname() 返回的是路径最后一个文件或者文件夹的所在路径
let url = path.dirname('/var/admin/houdunren/index.php');
console.log(url)
结果: /var/admin/houdunren
1
2
3
4
5
6
2
3
4
5
6
# 返回最后一个文件名或者文件夹名
let path = require('path');
//返回最后一个文件名或者文件夹名
let url = path.basename('/var/admin/houdunren/index.php');
console.log(url)
结果为:index.php
1
2
3
4
5
6
2
3
4
5
6
# 返回文件的扩展名
let path = require('path');
let url = path.extname('/var/admin/houdunren/index.php');
console.log(url)
结果为:.php
1
2
3
4
5
2
3
4
5
# path 模块返回当前的分隔符
let path = require('path');
//属性会返回当前的分隔符
let url = path.sep;
console.log(url)
结果为:\
1
2
3
4
5
6
2
3
4
5
6
# http
# WEB服务初始化
//引入http模块相当于php的apache (node.js不像php,http模块是node.js自带的)
let http = require('http');
//初始化server服务
var server = http.createServer();
//监听端口
server.listen(3000,()=>{
console.log('---server服务启动,端口3000---');
})
//在浏览器内在地址栏内访问 127.0.0.1:3000 或者 localhost:3000 的结果是一直转圈圈(一直在响应)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 接收用户请求和返回数据
//引入http模块相当于php的apache (node.js不像php,http模块是node.js自带的)
let http = require('http');
//初始化server服务
var server = http.createServer();
//监听端口
server.listen(3000,()=>{
console.log('---server服务启动,端口3000---');
})
//监听用户请求
//req : 客户端请求的相关信息和方法
//res : 客户端相应的一些方法
server.on('request',(req,res)=>{
//write 表示返回的信息
//简单的输出信息,可以输出多次
// res.write('这是服务器端返回的数据');
// end 表示结束响应
// res.end();
// 也可以直接使用end输出
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>你好啊;</body></html>')
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 根据访问路由返回不同信息(req.url)
//引入http模块相当于php的apache (node.js不像php,http模块是node.js自带的)
let http = require('http');
//初始化server服务
var server = http.createServer();
//监听端口
server.listen(3000,()=>{
console.log('---server服务启动,端口3000---');
})
//监听用户请求
//req : 客户端请求的相关信息和方法
//res : 客户端相应的一些方法
server.on('request',(req,res)=>{
// console.log(req.url)
if(req.url == '/'){
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>这是首页;</body></html>');
}else if(req.url == '/list'){
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>这是列表页面;</body></html>')
}else if(req.url == '/page'){
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>这是内容页面;</body></html>')
}else{
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>404页面没找到;</body></html>')
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 加载静态文件(如图片,css,js)
//引入http模块相当于php的apache (node.js不像php,http模块是node.js自带的)
let http = require('http');
let fs = require('fs');
//初始化server服务
var server = http.createServer();
//监听端口
server.listen(3000,()=>{
console.log('---server服务启动,端口3000---');
})
//监听用户请求
//req : 客户端请求的相关信息和方法
//res : 客户端相应的一些方法
server.on('request',(req,res)=>{
if(req.url){
// 读取这个图片
//'.' + req.url 实例(./1.jpg)
fs.readFile('.' + req.url,(err,data)=>{
if(err){
console.log(err);
}else{
res.end(data);
}
})
}else{
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>404页面没找到;</body></html>');
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 模板加载
//引入http模块相当于php的apache (node.js不像php,http模块是node.js自带的)
let http = require('http');
let fs = require('fs');
//初始化server服务
var server = http.createServer();
//监听端口
server.listen(3000,()=>{
console.log('---server服务启动,端口3000---');
})
//监听用户请求
//req : 客户端请求的相关信息和方法
//res : 客户端相应的一些方法
server.on('request',(req,res)=>{
if(req.url == '/'){
// 读取首页模版
fs.readFile('./view/index.html',(err,data)=>{
if(err){
console.log(err);
}else{
res.end(data);
}
})
}else if(req.url == '/list'){
// 读取列表页模版
fs.readFile('./view/list.html',(err,data)=>{
if(err){
console.log(err);
}else{
res.end(data);
}
})
}else if(req.url == '/page'){
// 读取内容页面模版
fs.readFile('./view/page.html',(err,data)=>{
if(err){
console.log(err);
}else{
res.end(data);
}
})
}else{
res.end('<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>404页面没找到;</body></html>');
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47