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:pass@host.com:8080/p/a/l/a?query=string#hash'
        href : user:pass@host.com: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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容