Node.js 常用接口

Node.js 就是运行在服务端的 JavaScript 。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动异步(非阻塞式)I/O单线程模型。轻量又高效。

http

创建服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//导入http模块中的功能
const http = require('http');
//2. 创建http服务
const server = http.craeteServer(function(request, response)) {
//request -> 请求,客服端发送给服务器的
//response -> 响应,服务器对客户端的响应
//告诉客户端响应完成
response.end(); //必须,有且只有一个
});
//3. 启动服务
/*
*参数1. 端口
*参数2. 监听的ip地址
*参数3. 回调 ->当服务器成功启动执行回调
*/
server.listen(80, '127.0.0.1', function(){
console.log('服务器成功创建并启动监听');
})

发送数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//1. 导入模块
const http = require('http');
//2. 创建http服务
const server = http.craeteServer(function(request, response)) {
//给客户端指定编码格式和网页状态码
//参数1:网页状态码
//参数2:设置网页的编码格式
response.writeHead(200, {'Content-Type' : 'text/html;charset=utf-8;'});
//write可以使用多次,向客户端发送数据
response.write('发送的数据1');
response.write('发送的数据1');
//告诉客户端响应完成
response.end(); //必须,有且只有一个
});
//3. 启动服务
// 参数2 默认就是本机地址
// 参数3 默认也可以不要
server.listen(80)

请求url过滤

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
const http = require('http');
let a = 0;
// 回调方法是每一次请求都会进来
const server = http.createServer(function(req, res){
// req.url 能获取到客户端发送的请求地址
//过滤请求url
if (req.url == '/favicon.ico'){
return;
}
//请求url默认跳转
else if (req.url == '/') {
req.url = '/index.html';
}
//404未找到
else {
res.writeHead(404, {'Content-type': 'text/html'});
res.end('404');
}
res.end();
});
server.listen(80);

fs(File System文件系统)

const fs = require(‘fs’);

读取文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
* 参数1: 要读取文件的路径
* 参数2: 回调函数
* 注意:
* 读文件是耗时操作,所以要用回调
* err永远是回调函数第一个参数
* Buffer是二进制数据的暂缓去
* 可以用toString()将二进制转换成可阅读的字符串
fs.readFile('note.txt', function(err, data) {
if (!err){
console.log(data.toString());
}
})
console.log(1);
//由于异步,先打印1再打印文件内容

文件操作

文件操作

  • 覆盖文件内容
    fs.writeFile(文件的路径, 写入的内容, 回调函数);

    1
    2
    3
    fs.writeFile('note.txt', '写入的内容', function(err){
    if (!err){console.log('写入成功')}
    })
  • 往最后追加内容
    fs.appendFile(文件的路径, 写入的内容, 回调函数);

  • 删除文件
    fs.unlink(文件的路径, 回调函数);

文件夹操作

  • 创建文件夹
    fs.mkdir(文件夹名, 回调函数);
    如果已经存在,则为err

  • 删除文件夹
    fs.rmdir(文件夹名,回调函数);
    如果不存在,则为err

查询文件状态

判断为文件或者是文件夹
fs.stat(文件/文件夹名路径, 回调函数);
回调的第二个参数为文件的状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
const fs = require('fs');
fs.stat('note.txt', function(err, status)) {
if (!err) {
//判断文件
if(status.isFile()){
console.log('文件');
}
//判断文件夹
else if(status.isDirectory()){
consoloe.log('文件夹');
}
}
})

读取文件夹里的内容

读取到所有文件包括文件夹

1
2
3
4
5
fs.readdir(文件的路径, function(err, files)){
if(!err){
console.log(files);
}
}

Path

1
2
3
4
5
//导入模块
const path = require('path');
//举例
const myPath = 'C:/abc/123.txt';
  • 连接路径
    path.join(路径1,路径2…);
    路径1/路径2/…

  • 获取文件名
    path.basename(myPath);
    123.txt

  • 获取当前文件所在路径(__dirname也可实现)
    path.dirname(myPath);
    C:/abc

  • 获取扩展名
    path.extname(myPath);
    .txt

path.parse

path.parse('C:\\path\\dir\\file.txt')
// 返回:
{
    root : "C:\\",
    dir : "C:\\path\\dir",
    base : "file.txt",
    ext : ".txt",
    name : "file"
}

url.parse

url.parse() 方法会解析一个 URL 字符串并返回一个 URL 对象(需要添加参数 true )。
node.js url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const url = require('url');
let myurl = 'http://127.0.0.1:80/a/b/c?name=shine&age=20';
//使用parse对url进行格式化
//第二个参数为true则将字符串转换成对象,可以用点语法获取对象的值
let query = url.parse(myurl, true).query;
console.log(query.name); //shine
//格式化字符串
const querystring = require('querystring');
let queryStr = url.parse(myurl).query; //name=shine&age=20
let obj = querystring.parse(queryStr);
console.log(obj); //{name : 'shine', age : '20'}
//获取访问路径
let pathname = url.parse(myurl).pathname;
console.log(pathname); // /a/b/c
//获取端口
let port = url.parse(myurl).port;
console.log(port); // 80