博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node学习笔记
阅读量:5035 次
发布时间:2019-06-12

本文共 1796 字,大约阅读时间需要 5 分钟。

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")):设置静态文件

 

转载于:https://www.cnblogs.com/laojun/p/7716760.html

你可能感兴趣的文章
Eclipse快捷键:同时显示两个一模一样的代码窗口
查看>>
《架构之美》阅读笔记05
查看>>
《大道至简》读后感——论沟通的重要性
查看>>
JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)
查看>>
关于React中props与state的一知半解
查看>>
java中Hashtable和HashMap的区别(转)
查看>>
关闭数据库
查看>>
webStrom智能提示忽略首字母大小写问题
查看>>
层叠加的五条叠加法则(一)
查看>>
设计模式六大原则(5):迪米特法则
查看>>
对Feature的操作插入添加删除
查看>>
javascript String
查看>>
ecshop 系统信息在哪个页面
查看>>
【转】码云source tree 提交超过100m 为什么大文件推不上去
查看>>
Oracle数据库的增、删、改、查
查看>>
阿里市值超越亚马逊 马云开启下半场技术理想
查看>>
MySql执行分析
查看>>
git使用中的问题
查看>>
yaml文件 .yml
查看>>
linux字符集修改
查看>>