nodejs总汇

概念:

Koa是基于nodejs平台的下一代web开发框架

  • Express原班人马打造
  • Async+await处理异步
  • 中间件机制

一些简单的内置模块

  1. 引用http模块(引入)
    var http = require('http'); // 搭建服务
  1. 简单的创建一个服务器 回掉函数表示接收到请求之后做的事情,然后返会服务实例:
var server = http.createServer(function(request,response){ //: 返回服务对象
        //request 指的是请求
        //response 指的是响应

        1) request.url  { 请求路径
            根据不同的请求路径,我们服务端做不同的处理 ,相应不同的结果
            根据不同的接口,做出不同的服务(响应不同内容)
        }

        2) response.writeHead(
            第一个参数 : 状态码
            第二个参数 : 响应头
            需要在end之前写这些东西
        ) **** 设置一个响应头

        3) response.end(
            第一个参数 : 字符串 响应的内容
            第二个参数 : 回掉函数
        ) ***** 完成发送响应 必写项
    
    })
  1. 监听端口
    server.listen((3000 :端口),('127.0.0.1' :端口号 地址), | 回掉函数 function(err){
    1) if(err) throw err : 抛出错误
    throw:抛出错误
    })
    ***** 缓冲器 buffer
  1. url模块
    var {URL} = require('url');
    var newurl = new URL('参数是顶级表单信息');
    1) url.parse(
        参数一 : 要解析的URL字符串
        参数二 : (默认false)如果是true 那么就可以将所有的查询变为***对象*** 就直接可以得到这个参数
    )
    2) url.parsing(
        'http://user:[email protected]:8080/p/a/l/a?query=string#hash'
        href : user:[email protected]:8080/p/a/l/a?query=string#hash
        protocol : http
        slashes:是否有 斜线//
        host : 主机名host.com:8080
        auth : 用户
        query : 查询部分
        hash : url中的锚点部分
    )
    3) newurl.searchParams.get('callback') searchParams.get方法拿到了 callback的值 例如 'callback=nb'  function nb(data){console.log(data)}
    4) new URLSearchParams(str.toString(utf-8)) 实例化查询字符串 把查询字符串变成对象 可以通过get()获取到 对应的value;

看图明了:
20190220210224131.png

5:querystring模块 :字符串查询 不常用

    querystring.parse(
    第一个参数: 接收字符串 返回查询对象 string***
    第二个参数:默认 &
    第三个参数:默认 =
    第四个参数:object***
                1:decodeURLComponent 把乱码解析成文字 默认querystring.unescape()
                2:maxKeys 指的是要解析键值的最大数量 默认1000
    )
  1. fs模块
    1) fs.readFile(path,encoding,function(err,data){
        1_ path : 文件路径
        2_ encoding : 编码格式
        3_ 第三个参数 : callback{
            err : 如果报错 
            data : 数据流
        }
    })
    2) fs.mkdir ('文件夹位置',callback) 创建文件夹
    3) fs.stat('./ann/aaa',function(err,data){ 
        stat 检测状态
        data.isDirectory() : 返回布尔值 只返回true  检测这个路径, 是不是一个文件夹
        })
    4)  文件检测
    fs.readdir('./ann',function(err,files){
        files:是文件名的数组,不是文件的数组 表示./ann中的所有东西
        console.log(files)
    })   
    5)  fs.writeFile(路径,数据,回掉函数(err))
    6) fs.open(路径,回掉函数(err))  判断路径是否存在 
        1.callback(err, fd)
            1) .fd: 返回表示文件描述符的整数 
            2) .err: 报错比fd有用
                1).err.code === 'EEXIST' // 表示存在
                2).err.code === 'ENOENT' // 表示不存在
    7) 关闭文件
        异步
            fs.close(fd, callback)
            fd: 文件描述符
            callback(err)
        同步
            fs.closeSync(fd)

    (附加) fd: 文件描述符
        1.概念: 在操作系统中每个打开的文件会被分配一个数字的标识,文件操作使用了这些文件描述符来识别和追踪每个特定的文件,
        2.在nodejs中,每操作一次文件后,文件描述符就会递增1,并且从3开始
            0: 标准输入 process.stdin
            1: 标准输出 process.stdout
            2: 错误输出 process.stderr
    8)创建可读流
    fs.createReadStream(path[, options]);
        1.path: 文件路径
        2.flags: 默认值 r
        3.encoding: null
        4.mode: 默认值: 0o666
        5.autoClose: true
        6.start
            1.可以包括 start 和 end 值,以从文件中读取一定范围的字节而不是读取整个文件。 start 和 end 都包含在内并从 0 开始计数,允许的值在 [0, Number.MAX_SAFE_INTEGER] 的范围内.。如果指定了 fd 并且 start 被省略或 undefined,则 fs.createReadStream() 从当前文件位置开始顺序读取。
            2. encoding 可以是 Buffer 接受的任何一种字符编码。
        7.end: 默认值: Infinity


     *************创建文件 **pipe   流(stream).pipe()
             
    9)创建可写流
    fs.createWriteStream(path[, options])
          1.path: 文件路径
        2.flags: 默认值 r
        3.encoding: null
        4.mode: 默认值: 0o666
        5.autoClose: true
        6.start
            1.可以包括 start 和 end 值,以从文件中读取一定范围的字节而不是读取整个文件。 start 和 end 都包含在内并从 0 开始计数,允许的值在 [0, Number.MAX_SAFE_INTEGER] 的范围内.。如果指定了 fd 并且 start 被省略或 undefined,则 fs.createReadStream() 从当前文件位置开始顺序读取。
            2. encoding 可以是 Buffer 接受的任何一种字符编码。
        7.end: 默认值: Infinity
    10) mode: 文件模式
        7: 可读可写,可执行
        6: 可读可写
        5: 可读可执行
        4: 只读
        3: 可写可执行
        1: 只执行
  1. path模块
    let path=require(‘path’) 获取文件路径
    path.extname(url) 获取url后缀名
    path.parse() 方法返回一个对象,其属性表示该对象的重要元素path
    path.format() 方法从对象返回路径字符串。
    path.join() 方法path使用特定于平台的分隔符作为分隔符将所有给定段连接在一起,然后规范化生成的路径。零长度path段被忽略。如果连接的路径字符串是零长度字符串,’.'则将返回,表示当前工作目录
  1. MIME
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。 是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。 多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

···MIME类型看下篇博客···

  1. JSONP
    JSONP是想跨域去请求服务端的数据 
        **动态创建script标签
        模板{
        funciton jsonp(url,clName){
        let script = document.createElement('script')
        script.src =  url + '?callback' + clName;
        document.body.appendChild(script)
        script.onload = function(){
        console.log(1)
        
        }
        }
        jsonp('http://127.0.0.1:3000',nb)
        }
    
    function nb(data){
    console.log(data)
    }
        1·需要一个客户端 一个服务端 
        2·必须违反同源策咯:同域名,同端口 同协议
        3·通过script标签的src像不同的服务器请求数据
        4·src:它是一种资源请求,不存在跨域
        5·script标签:她导入的是js,并且会将js执行一遍

跨域问题延伸

    // 接受任意域名的请求
res.setHeader("Access-Control-Allow-Origin", "*");

    // 表明服务器支持的所有头信息字段
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");

    // 用来列出浏览器的CORS请求会用到哪些HTTP方法
res.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    // 指定本次预检测请求的有效期
res.setHeader("Access-Control-Max-Age", 50);

更多nodejs模块请参考 https://www.nodejs.com

你可能感兴趣的:(nodejs总汇)