node中的http等
同步异步调用
Node只在文件操作中提供了同步调用和异步调用两种形式
- 同步调用很简单,尅死于定义了一个变量,接受函数的值。
文件操作
-
文件监视
-
watcFile
`fs.watchFile('地址', {
persistent: true,
interval: 500}, (curr, prev) => {
console.log()
})`
promise的状态一旦改变,就无法恢复
- Promise对象有三种状态: resolved rejected pending,默认Promise对象是pending状态一旦从进行中改变 该Promise对象就执行结束了。Promise内部的状态一旦改变,无法修改,也就是不能重复执行
-
文件流
- 使用瓢的形式
- 1 创建一个可读流
- 2 创建一个可写流
- 3 监听可读流对象的data事件和end事件
- 3.1 在data事件中,将读取的数据写到可写流中
- 3.2 当end事件触发执行的时候,手动关闭可写流
- 使用瓢的形式
-
data事件会源源不断的被触发,读取的文件越大,data事件触发的次数就越多,每次读取到的内容,触发data事件,然后将读取的数据传递给回调函数
-
每次读取到的就是一个二进制数据,在node中叫做buffer,
-
buffer是一个类似于数组的东西是length属性,buffer的长度就是字节大小
-
调用可读流的pipe方法,传入一个可写流对象,node就会自动帮你去将可读流中的数据写入到可写流中
http服务
-
创建http服务器
const server = http.createServer() -
监听服务器的request请示事件
server.on('request', (request, response) => {
只要有客户端请求进来,就会触发服务器Server对象的request请求事件,执行响应的回调函数
request是一个请求对象,可以获取客户端的请求信息,例如请求路径,报文。请求方法、客户信息
response是响应对象,专门用来给本次请求发送响应报文
response.write('hello')
response.end()
})
- 设置监听端口,开启服务器
server.listen(3000, => {
console.log('server is running at port 3000')
})
-
在一次请求中,只能结束一次响应,只要结束了,就不能再次write了
-npm中packjson中的scripts里边可以简化npm命令
satrtsWith('')判定一个字符串是否是以指定的字符串开头的
__fliename 获取当前文件模块的绝对路径
__dirname获取当前文件模块所在目录的绝对路径
JSON.stringify()可以将一个json对象转换为一个json字符串
writeHead(200, {
'Content-Type':'text/plain; charset:'utf-8''
)
表单GET请求提交
1.表单默认会将该表单内部的多有具有name属性的input按照input的name=input的value的形式放到url地址栏中,发起请求
一些常用API
- Globals 全局
- setTimeout
- SetInterval
- setImmediate
- global
- 类似于window对象,在整个模块系统中共享一个global,没有全局作用域
- process
- 进程对象:能获取当前进行的node程序的一些信息,例如向当前终端输出一些内容,或者接受终端中用户的输入
- buffer(是node中处理二进制数据做的一个对象)是一个类似于数组的结构对象
- 例如读取文件,默认不指定编码的情况下读取到的就是一个buffer对象
- buffer数组结构是一个由16进制表现形式的一个一个的单位元素
- buffer和字符之间有编码转换关系
- iiconv-Lite内置了很多字典
- 模块系统
- 封装细节,对外暴露功能
- module
- require()
- exports
- 模块内属性成员
- __dirname和__filename
- Path
- path.basename
- path.dirname
- path.exitname
- path.isAbsolute
- path.join
- File System
- http
- Query String
- querystring.parse(str)
- 可以把传入的
key1=value&key2=value的形式转换为对象
- URL
- url.parse
- Utilities
${socket.remoteAddress}可以拿到请求地址
${socket.remotePortAddress}可以拿到远端端口号
${req.method}可以拿到请求方法
${req.url}可以拿到请求路径
IP地址和端口号的作用
- ip地址就是计算机与计算机之间的电话电话
- http服务器将客户端的IP地址+端口号 包装到一个抽象的接口对象中:socket
- 端口号就是用来定义一个具体的应用程序的
http请求报文
- 请求头
- 请求首行
- 请求方法
- 请求路径(包含查询字符串)
- 客户端使用的HTTP协议版本
- 请求首部字段
- 由键值对的格式组成
- 请求首行
- 请求体(post请求才有)
- 传输数据的
使用node接受解析表单POST提交的数据
- 监听req对象的data和end事件
encoddeURI('地址')转码
decodeURI('地址')解码
formidable插件
小众软件
浙公网安备 33010602011771号