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服务
  1. 创建http服务器

    const server = http.createServer()

  2. 监听服务器的request请示事件

server.on('request', (request, response) => {
只要有客户端请求进来,就会触发服务器Server对象的request请求事件,执行响应的回调函数
request是一个请求对象,可以获取客户端的请求信息,例如请求路径,报文。请求方法、客户信息
response是响应对象,专门用来给本次请求发送响应报文
    response.write('hello')
    response.end()
})
  1. 设置监听端口,开启服务器
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提交的数据
  1. 监听req对象的data和end事件

encoddeURI('地址')转码

decodeURI('地址')解码

formidable插件

小众软件

posted on 2016-11-06 01:02  山上的小兵  阅读(287)  评论(0)    收藏  举报

导航