目录
ES6
块级作用域
- let声明的变量进入暂时性死区,赋值前不允许访问
- let声明的变量不允许重复声明
NODEJS
全局对象
global对象
- global 最根本的作用是作为全局变量的宿主。
- 检测一个变量(函数)是否为全局,全局变量或者全局函数会存储global对象下
- JS下的全局对象为window
process 对象
process 对象用来查看当前运行的Node.js进程
process.arch 查看当前CPU架构
process.platform 查看当前操作系统
process.pid 查看当前进程编号
process.kill()结束指定编号的进程
Buffer 对象
Buffer,缓冲存储区,内存中一块区域,用于临时存储数据
分配内存空间
// 单位字节,每个汉字占3个字节
var buf = Buffer.alloc(9,'abc小莉莉');
console.log(buf.toString());
模块
一个文件就是一个模块,每个文件就是一个独立的功能
- module 当前模块对象
- module.exports,当前模块暴露的对象,默认空对象,暴露内容都添加到这个空对象下
- require(),引入其他模块,得到暴露对象
NODEJS
timer——定时器
开启定时器
// 开启
// 一次性定时器
var timer = setTimeout(() => {
console.log("点击发送快递");
}, 3000);
清楚定时器
// 清楚定时器
clearTimeout(timer)
周期性定时器
开启
var timer = setInterval(() => {
console.log("fdsfnfdks");
}, 3000);
清除
clearInterval(timer)
立即执行定时器
// 立即执行定时器
console.log(2);
setImmediate(()=>{
console.log(1);
})
console.log(3);
// 立即执行定时器(优先级高)
process.nextTick(()=>{
console.log(4);
})
所有的定时器执行过程,都是将回调函数放入到主程序后的事件队列执行
文件系统
- statSync(文件的路径)/stat(文件的路径,回调函数)
- isFile()是否为文件
- isDirectory()是否为目录
同步 API和异步 API
- 同步,在主程序中执行,会阻止主程序中后续代码的执行;同步AP是I通过返回值获取结果
- 异步,在一个独立的线程下运行,不会阻止主程序后续代码的执行,异步API是通过回调函数获取结果
Node.js下,提供的API带有回调函数的都是异步API
写入文件
writeFileSync(path,data)/ writeFile(path,data,callback)
- 如果文件不存在,先创建文件,再写入值
- 如果文件已经存在,先清空文件内容,再写入值
追加写入
appendFileSync(path,data)/ appendFile(path,data,callback)
- 如果文件不存在,先创建文件,再写入值
- 如果文件已经存在,在文件的末尾追加写入的值
读取文件
readFileSync(path)/readFile(path,callback)
// 引入文件系统模块
// 同步API,会阻止后续代码的执行
const fs = require("fs");
// 读取文件 同步
var data = fs.readFileSync("1.txt");
fs.readFile("2.txt", (err,data) => {
if (err) return console.error(err);
console.log(data.toString());
});
删除文件
unlinkSync(path)/unlink(path,callback)
检测文件(目录)
existsSync(path)
文件流
createReadStream(path)创建读取的流,以流的方式读取文件
createReadStream(path)创建写入的流,创建一个新的文件
pipe()管道,将读取的流添加到写入的流
on(‘事件名称’,callback)添加事件,监听事件,
HTTP 协议
超文本传输协议, 是客户端和web服务器之间的通信协议
- 通用的头信息
- 请求的网址(Request URL):要请求的服务端资源
- 请求的方法(Request Method):对资源的操作方式,get 获取资源,post 传递资源……
- 响应状态码(Status Code):
- 1**接收了部分的响应
- 2**成功的响应
- 3**重定向
- 4**客户端错误
- 5**服务器错误
- 相应的头信息(response)
- Location:要跳转的网址
- Content-Type:响应的内容类型,如果要解决中文乱码,text/html;charset=utf-8
- 请求的头信息(request)
HTTP 模块
web服务器:提供资源的服务器
createServer()创建web服务器
listen(number,callback)设置端口
on(‘request’,(req,res)=>{
res 响应对象
res.statusCode=状态码 设置响应的状态码
res.setHeader()设置响应的头信息
res.write()设置响应到浏览器内容
res.end()结束并发送
})
设置服务器跳转
// 引入http模块
const fs = require("fs");
const http = require("http");
// 创建web服务器
const app = http.createServer();
// 设置端口,用于访问web服务器
app.listen(3000, () => {
console.log("服务器启动成功");
});
// 域名
// http:localhost:3000
// IP地址
// http:127.0.0.1:3000
// 添加事件,监听客户端请求,做出响应
app.on("request", (req, res) => {
// console.log("视频请求");
// req 请求对象
// res 响应对象
// 设置响应头信息内容类型
// res.setHeader("Content-Type", "text/html;charset=utf-8");
// //设置响应到浏览器的内容
// res.write("web前端");
// // 结束
// res.end();
// 设置响应状态码
res.statusCode = 302;
// 设置响应的头信息,跳转网址
res.setHeader("Location", "https://www.tmooc.cn/");
// 结束并发送
res.end();
});