例子来源:http://www.runoob.com/nodejs/nodejs-event-loop.html http://www.runoob.com/nodejs/nodejs-event.html // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 创建事件处理程序 var connectHandler…
Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下: // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); //或者如下 var EventEmitter = require('events').EventEmitter; var ev…
events可以说是node实现异步的基石,也是其他几个常用核心模块api的异步方法的原型. var eventEmitter=require('events').EventEmitter; //var eventEmitter=require('events'); 这样写也可以 var myEvent=new eventEmitter(); myEvent.on('shout',function(){console.log('Oh')}) myEvent.emit('shout'); 引入ev…
这一节内容超级简单,纯JS,就当给自己放个假了,V8引擎和node的C++代码看得有点脑阔疼. 学过DOM的应该都知道一个API,叫addeventlistener,即事件绑定.这个东西贯穿了整个JS的学习过程,无论是刚开始的自己获取DOM手动绑,还是后期vue的直接@click,所有的交互都离不开这个东西. 同样,在node中,事件绑定也贯穿了整个框架.基本上大多数的内置模块以events为原型,下面的代码随处可见: EventEmitter.call(this); 不同的是,页面上DOM的事…
事件队列的核心:事件触发与事件监听器功能的封装. // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); eventEmitter.on('some_event', function() {     console.log('some_event 事件触发'); }); setTimeout(function() {   …
node中的几个常用核心模块的api返回的都是eventEmitter的实例,也就是说都继承了on和emit方法,用以监听事件并触发回调来处理事件. http模块处理网络请求通常是创建一个server实例: const server = http.createServer((request, response) => { // magic happens here! }); 它是以下代码的简写: const server = http.createServer(); server.on('req…
var EventEmitter = require('events').EventEmitter; var emitter = new EventEmitter(); console.log(emitter.getMaxListeners()); //设置可监听事件的最大个数 emitter.setMaxListeners(11); function work(who){ console.log(who + ' go to work') } //监听事件 emitter.on('do', wo…
通过node中的http模块可以创建编写服务器 引入 const http = require('http') http举例使用: const http = require('http') //引入 const server = http.createServer() //创建web服务器 // 服务器可以提供的服务:对数据的服务 // 1.发请求 // 2.接收请求 // 3.处理请求 // 4.发送响应 server.on('request', () => { console.log('收到…
前言 fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装.但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择. 一.文件读取 文件读取又分为同步读取(readFileSync())和异步读取(readFile()) //1.文件同步读取 const bufferStr = fs.readFileSync('./file/test.txt'}); console.log(bufferStr); // 因为没有声明encodin…
function Events() { // 放置所有添加的 监听事件 this._events = {} } Events.prototype = { on: function (name, fn, ...argOrg) { // 必传参数验证 if (!name || !fn) { arguments required`) return } // 阻止重复添加相同的监听 let fns = this._events[name] || [] if(fns.find(item=> item.fn…
使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高效.并且Node中的大量模块都使用了Event机制,因此可以说是整个Node中最重要的模块之一. 实例: let event = new eventEmitter(); event.on('someType',function(){ }); even…
一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者设计模式来实现把事件监听器添加到对象以及移除,之前写OC那块的时候也有些观察者设计模式,在OC中也经常用到:通知中心.KVO,也很容易理解. .addListener(eventName,callback):将回调函数附加到对象的监听器中.当eventName的事件被触发时,回调函数被放置在事件队列…
官方中文文档是这样描述的:   就给我们这几句话 就打发我们了. 按照上面的写法,根本不知道  - (void)calendarEventReminderReceived:(NSNotification *)notification 方法  什么时候去调用.   但是我们根据iOS知识,知道想要发送通知,肯定要先监听通知.   所以我们要保证RN组件 先监听事件通知,在去原生组件发送事件通知.   原生组件: EventEmitterManager.h #import <React/RCTBri…
实现一个EventEmitter类,这个类包含以下方法: on(监听事件,该事件可以被触发多次)- once(也是监听事件,但只能被触发一次)- fire(触发指定的事件)- off(移除指定事件的某个回调方法或者所有回调方法) function EventEmitter() { this.handlers = {} } //监听事件,该事件可以被触发多次 EventEmitter.prototype.on = function (eventName, handle) { if (!this.h…
events 模块只提供了一个对象: events.EventEmitter. [EventEmitter 的核心就是事件触发与事件监听器功能的封装.] EventEmitter 的每个事件由一个事件名和若干个参 数组成,事件名是一个字符串,通常表达一定的语义.对于每个事件,EventEmitter 支持 若干个事件监听器.当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作 为回调函数参数传递. 例子: var events = require('events'); var emit…
目录: 前言 Node.js事件驱动介绍 Node.js事件 注册并发射自定义Node.js事件 EventEmitter介绍 EventEmitter常用的API error事件 继承EventEmitter 前言: 今天事儿太多了,没有发太多的东西.不好意思了各位. 本篇主要介绍Node.js中的事件驱动,至于Node.js事件概念的东西,太多了. 本系列课程主要抱着的理念就是,让大家慢慢的入门,我也尽量写的简单一点. 所以呢,本文事件驱动,大家的目标应该是:理解Node.js的事件驱动.会…
一.EventEmitter 类 Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件. 所有这些产生事件的对象都是 events.EventEmitter 的实例. events 模块只提供了一个对象: events.EventEmitter.EventEmitter 的核心就是事件触发与事件监听器功…
/** * Created by Administrator on 2016/8/3. */ var http = require("http"); //Node 导入文件系统模块 var fs = require("fs"); //引入events模块 var events = require("events"); //创建eventEmitter对象 var eventEmitter = new events.EventEmitter();…
全局对象 global 是全局变量的宿主 全局变量 在最外层定义的 全局对象的属性 隐士定义的变量(未定义直接赋值的变量) 当定义一个全局变量时 这个变量同时也会成为全局对象的属性 反之亦然 注意: Node.js中你不可能在最外层定义变量 因为所有用户代码都是属于当前模块的 而模块本身不是最外层上下文 process process.argv 是命令行参数数组 第一个元素是node 第二个元素是脚本文件名称 第三个开始是每个元素的运行参数 例子 //argv.js console.log(pr…
Node.js Domain(域) 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的异常.引入 Domain 模块 语法格式如下: var domain = require("domain") domain模块,把处理多个不同的IO的操作作为一个组.注册事件和回调到domain,当发生一个错误事件或抛出一个错误时,domain对象会被通知,不会丢失上下文环境,也不导致程序错误立即推出,与process.on('uncaughtException')不同. Domain…
Domain(域)模块简化了异步代码的异常处理方式,可以捕捉处理try catch无法捕捉的异常. 引入 var domain=require("domain"); domain模块,把处理多个不同的IO的操作作为一个组.注册事件和回调到domain,当发生一个错误事件或抛出一个错误时,domain对象会被通知,不会丢失上下文环境,也不导致程序错误立即推出,与process.on('uncaughtException')不同. Domain 模块可分为隐式绑定和显式绑定: 隐式绑定:…
/** * 原生node.js结合formidable模块实现图片上传改名 * @Author:Ghost * @Date:2016/07/15 * @description: * 1.引入模块http.formidable.fs.silly-datetime.path * 2.创建http服务器 * 3.实例化formidable对象并调用IncomingForm()方法 * 4.调用uploadDir属性设置文件上传路径 * 5.调用formidable parse()方法对表单进行解析 *…
Ryan Dahl开发node的初衷就是:把Nginx非阻塞IO功能和一个高度封装的WEB服务器结合在一起的东东.所以Node初衷就是为了高性能的Web服务器去的,所以:Node的HTTP模块也是核心的核心. 本文需要您了解的前置知识点: HTTP协议 Web请求模型:请求→处理→响应 Node的流.事件 http模块的客户端 要使用 HTTP 服务器与客户端,需要 require('http')模块.http模块提供了两个函数http.request()和http.get(),帮助程序向服务器…
error 事件 EventEmitter 定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到异常的时候通常会触发 error 事件.当 error 被触发时,EventEmitter 规定如果没有响应的监听器,Node.js 会把它当作异常,退出程序并输出错误信息.我们一般要为会触发 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃.例如: var events = require('events'); var emitter = new events.EventEm…
Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js 下层 C++部分实现,而接口由JavaScript封装,兼顾了高性能与简易性.http.request 则是一个HTTP 客户端工具,用于向 HTTP 服务器发起请求. 'http'模块提供两种使用方式: 作为服务端使用时,创建一个HTTP服务…
nodejs事件机制 ##### http服务器和客户端 node.js标准库提供了http模块,其中封装了一个高效的http服务器和一个简易的http客户端 HTTP服务器 1. http.createServer()创建HTTP服务器. //服务器实例 var httpServer = require("http") httpServer.createServer(function(req,res){ res.writeHead(200,{"Content-Type&qu…
Buffer这块很早前就想留一篇笔记.前端JS处理buffer的场景其实并不多,虽然后来基于webGL与显卡通信的需求增加了二进制数组,但毕竟相对小众. Buffer的含义是,在数据传输时用内存中的一块地方临时存储Input/Output的data(原始数据).我们处理buffer,其实就是处理二进制数据. 在node中Buffer模块的Buffer类有好几十个api,主要的莫过于分配缓存区.读写.和一些常见操作. *buffer在nodejs中是全局存在的,不必require. *所有以new…
Node.js require 模块加载原理 All In One require 加载模块,搜索路径 "use strict"; /** * * @author xgqfrms * @license MIT * @copyright xgqfrms * @created 2020-10-01 * @modified * * @description * @difficulty Easy Medium Hard * @complexity O(n) * @augments * @exa…
node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', 对于UNIX系统,分隔符为'/',针对'..'返回上一级:/与\都被统一转换 path.normalize(p); var path=require('path') var myPath = path.normalize(__dirname + 'node_modules/ejs/REANME.md'); c…
  如果我们需要大批量修改一个文件中的名称,比如,删除文件名中的副本时,就可以借助node的文件系统模块,快捷快速的完成. 首先建立一个js文件(changeName.js),代码如下: // 引入fs文件处理模块 var fs = require("fs"); var path = 'img' fs.readdir(path, function(err, files) { // files是名称数组 files.forEach(function(filename) { //运用正则表…