zoukankan      html  css  js  c++  java
  • node学习笔记

    1、node回调函数:

      node使用回调函数,实现异步编程,达到非阻塞流程。

      node是单线程,但所有api都是异步,实现并发

      node基本所有的事件机制都是观察者模式

    2、node事件驱动程序

      我的理解:node将所有的请求或事件等io操作都丢进eventloop里,然后由eventloop循环检测达到触发条件的回调函数并执行。

    3、eventEmitter

    //event.js 文件
    var EventEmitter = require('events').EventEmitter; 
    var event = new EventEmitter(); 
    event.on('some_event', function() { 
        console.log('some_event 事件触发'); 
    }); 
    setTimeout(function() { 
        event.emit('some_event'); 
    }, 1000); 

    eventEmitter的api:

      addListner(event,listener):给事件添加监听器到尾部

      emit(event):触发事件

      on(event,listener):给事件注册监听器

      once(event,listener):给事件注册一次性监听器

      removeListener(event,listener):给事件删除监听器,此处的监听器必须为实名函数

      removeAllListener(event):移除所有监听器

      setMaxListeners(n):设置最大的监听器数量

    4、Buffer

      node的一个类,用于创建存放二进制数据的缓存区

      类似于一个整数数组,但是是对应于v8堆内存之外的的一个原始内存

      

      buffer和string之间转换(读取缓冲区数据)通过toString方式,默认编码为utf-8

    5、Stream流

      node的抽象接口

      四种类型: 

    • Readable:用来读取数据,比如 fs.createReadStream()

    • Writable:用来写数据,比如 fs.createWriteStream()

    • Duplex:可读+可写,比如 net.Socket()

    • Transform:在读写的过程中,可以对数据进行修改,比如 zlib.createDeflate()(数据压缩/解压)。

      stream为eventEmitter的实现;有以下几个事件

    • data - 当有数据可读时触发。

    • end - 没有更多的数据可读时触发。

    • error - 在接收和写入过程中发生错误时触发。

    • finish - 所有数据已被写入到底层系统时触发。

     6、node模块系统:

      require,查找的顺序为:文件模块缓存区--》原生模块--》文件

    7、文件系统:

      var fs = require("fs");

      读写文件、打开关闭删除文件等等操作

    8、node工具模块:

      OS模块:系统相关操作模块

         系统内存、操作系统名、返回主机名等。。。

      path模块:处理文件路径模块

        格式化路径、连接路径、转换绝对路径、读取文件后缀名等。。。

      Net模块:用于底层的网络通信小工具

        创建tcp或本地服务器等。。

      dns模块:用于解析域名

      

      domain模块:简化异步代码异常处理,捕捉try catch无法捕捉的错误

    9、web模块:

    10、express框架:

        利用中间件来响应http请求

        定义路由响应不同http请求

        向模板传递动态参数渲染页面,如ejs模板

      常用的模块:

        body-parser:用于处理json等编码数据

        cookie-parser:用于处理cookie,可通过req.cookies获取传递给服务器的cookie对象

        multer:用于处理enctype='multipart/form-data'(设置表单MIME编码)的表单数据 

    app.user(express.static("public")):设置静态文件

  • 相关阅读:
    学习笔记:@RequestMapping
    学习笔记:serializable接口实现Java对象序列化
    学习笔记:JWT在spring中的时间
    学习笔记:JWT学习
    《OpenGL编程指南》学习进度备忘
    【练习7.4】使用直方图陆地移动距离EMD区分不同光线条件下的图片cvCalcEMD2
    【练习7.3】从直方图创建signature、计算两个直方图的EMD距离
    自动变量和开辟内存的生存期和作用域探讨
    【练习7.2】直方图归一化cvNormalizeHist、匹配cvCompareHist及各种匹配方法
    【练习7.1】cvCreateHist创建直方图、cvCalcHist计算直方图、cvQueryHistValue_1D访问直方图及右左法则
  • 原文地址:https://www.cnblogs.com/laojun/p/7716760.html
Copyright © 2011-2022 走看看