NODEJS笔记
零.笔记前一些东西
0.1require()
用于引入模块、 JSON、或本地文件。
可以从 node_modules 引入模块。
可以使用相对路径(例如 ./、 ./foo、 ./bar/baz、 …/foo)引入本地模块或 JSON 文件,路径会根据 __dirname 定义的目录名或当前工作目录进行处理。
// 引入本地模块:
const myLocalModule = require('./path/myLocalModule');
// 引入 JSON 文件:
const jsonData = require('./path/filename.json');
// 引入 node_modules 模块或 Node.js 内置模块:
const crypto = require('crypto');
一.fs-文件系统
加载fs核心模块
const fs = require('fs')
1.1读文件-fs.readFile()
fs.readFile(path, callback)
例1:读取hello.txt的内容
const fs = require('fs')
fs.readFile('./hello.txt', (err, res) => {
if (err) throw err
console.log(res)
})
//hello.txt内容:hello word
//<Buffer 68 65 6c 6c 6f 20 77 6f 72 64>
例2:将原始buffer改为指定字符编码
const fs = require('fs')
fs.readFile('./hello.txt', 'utf-8', (err, res) => {
if (err) throw err
console.log(res)
})
//hello.txt内容:hello word
//hello word
1.2写文件-fs.writeFile()
fs.writeFile(path,data,callback)
例1:创建一个js文件,文件名:hello.js
const fs = require('fs')
fs.writeFile('./hello.js', '', (err) => {
if(err){
console.log('文件写入失败')
console.log(err)
}
else{
console.log('文件写入成功')
console.log(err)
}
})
//文件写入成功
//null
1.3删文件-fs.unlink()
fs.unlink(path,callback)
例1:删除同目录下的hello.js文件
const fs = require('fs')
fs.unlink('./hello.js',(res)=>{
console.log('文件已经删除')
})
//
```文件已经删除
# 二.http-HTTP
加载http核心模块
```javascript
const http = require('http')
1.4创建目录-fs.mkdir()
fs.mkdir(path[, options], callback)
例1:在同目录下创建新目录
const fs = require('fs')
fs.mkdir('./new', {
recursive: true
}, (err) => {
if (err) throw err
})
1.5删除目录-fs.rmdir()
fs.rmdir(path,callback)
例1:删除创新的new目录
const fs = require('fs')
fs.rmdir('./new', (err) => {
console.log(err)
})
二.http-HTTP
2.1创建WEB服务器
例1:
//1.加载http核心模块
const http = require('http')
//2.使用http.createServer()方法创建一个WEB服务器
const server = http.createServer()
//3.服务器配置
server.on('request', () => {
console.log('收到请求')
})
//4.绑定端口号,服务器启动
server.listen(3000, () => {
console.log('服务器启动成功,可以通过:http://127.0.0.1:3000/访问')
})
response对象有一个方法:write可以用来给客户端发送响应数据
write可以使用多次,但是最后一次一定要使用end来结束响应
response.write('hello')
response.write(' world')
response.end()
上方代码可等价为一下代码
response.end('hello world')
例2:不同路径响应不停结果
const http = require('http')
const server = http.createServer()
erver.on('request', (request, response) => {
console.log('收到请求,请求路径:' + request.url)
if (request.url == '/') {
response.write('this is /')
} else if (request.url == '/favicon.ico') {
response.write('this is /favicon.ico')
} else {
response.write('this is something else')
}
response.end()
})
server.listen(3000, () => {
console.log('服务器启动成功,可以通过:http://127.0.0.1:3000/访问')
})
2.2中文字符乱码解决-response.setHeader()
例1:
const http = require('http')
const server = http.createServer()
server.on('request', (request, response) => {
const url = request.url
if (url == '/') {
response.end('初始化')
}
})
server.listen(3000, () => {
console.log('127.0.0.1:3000')
})
//“初始化”显示为“鍒濆鍖�”
服务器默认发送utf-8编码内容,但是浏览器在此并不知道,在不知道服务器响应内容的编码的情况下会按照当前系统的默认编码去解析
中文的默认操作系统是gbk
例2:例1的解决方法
const http = require('http')
const server = http.createServer()
server.on('request', (request, response) => {
const url = request.url
if (url == '/') {
response.setHeader('Content-Type', 'text/plain;charset=utf-8')
response.end('初始化')
}
})
server.listen(3000, () => {
console.log('127.0.0.1:3000')
})
即添加
response.setHeader('Content-Type', 'text/plain;charset=utf-8')
在http协议中,Content-Type是告诉对方发送数据类型
Content-Type对照表
https://tool.oschina.net/commons
2.3发送文件中的数据
例
有一个html文件,文件名为01.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>hahahah</h1>
</body>
</html>
通过node打开
const http = require('http')
const fs = require('fs')
const server = http.createServer()
server.on('request', (request, response) => {
const url = request.url
if (url == '/') {
fs.readFile('./01.html', 'utf-8', (err, res) => {
if (err) throw err;
const content = res
response.setHeader('Content-Type', 'text/html;charset=utf-8')
response.end(content)
})
})
server.listen(3000, () => {
console.log('127.0.0.1:3000')
})