Nodejs有一个重要的事件模块:EventEmitter. 它在Nodejs的内置及第三方模块中被大量使用,许多Nodejs项目的架构都是用它实现的. 可见,EventEmitter对于学习NodeJS非常重要. 下面,我们通过例程来理解和掌握EventEmitter. var EventEmitter = require('events').EventEmitter; var event = new EventEmitter(); //触发some_event事件setTimeout(fun…
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件. 所有这些产生事件的对象都是 events.EventEmitter 的实例. 1.EventEmitter简单示例 event.js var EventEmitter = require('events').EventEmitter; v…
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高. Node.js 几乎每一个 API 都是支持回调函数的. Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现. Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. 事件驱动程序 Node.js 使用事件驱动模型,当web server接收到请…
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await 等新语法,所以请保证 node 环境在 7.6 版本以上. 安装node.js 直接安装 node.js :node.js官网地址 https://nodejs.org nvm管理多版本 node.js :可以用nvm 进行node版本进行管理 Mac 系统安装 nvm https://githu…
经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每种编程语言必经之关“HelloWorld”,不要小看这个HelloWorld,每学一样新的东西,HelloWorld是必须的,因为能给有接下来学习的勇气. 这里以Linux为例,第一个HelloWorld例子 console.log('hello world') 结果如下: 还可以将其编辑为一个he…
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404),或服务器内部发生了错误(500),站点会展示出某个特定的页面,比如: 那么如何在 Koa 中实现这种功能呢?其实,一个简单的中间件即可实现,我们把它称为 http-error.实现过程并不复杂,拆分为三步来看: 第一步:确认需求 第二步:整理思路 第三步:代码实现 确认需求 打造一个事物前,需要先确…
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分,版本迭代和后期维护占了极其重要的部分.项目上线运转起来之后,我们如何知道项目运转的状态呢?如何发现线上存在的问题,如何及时进行补救呢?记录日志就是解决困扰的关键方案.正如我们每天写日记一样,不仅能够记录项目每天都做了什么,便于日后回顾,也可以将做错的事情记录下来,进行自我反省.完善的日志记录不仅能…
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由请求.结构分层.视图渲染.静态资源等. 那么,JSON 呢?JSON 格式数据的传输,已经深入到了我们的码里行间,脱离了 JSON 的人想必是痛苦的.那么,复合吧! 如何设置 JSON 格式 伟大的武术家--李小龙先生--说过这样一段话: Empty your mind, Be formless,s…
视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并使用 安装 koa-static: npm i koa-static -S 修改 app.js,增加并指定 /public 目录为静态资源目录. const Koa = require('koa') const path = require('path') const bodyParser = re…