Egg.js 实战(实现一个接口服务)

在之前我们已经了解过 Node.jsKoa.js 的一些相关知识,今天我们来看看如何使用 Egg.js 来实现一个接口服务,Egg.js 是一个基于 Koa.js 框架而实现的框架,所以它应当属于框架之上的框架,它继承了 Koa.js 的高性能优点,同时又加入了一些『约束与开发规范』,来规避 Koa.js 框架本身的开发自由度太高的问题

Koa.js 源码解析

中间件常用中间件的实现 章节当中,我们简单的介绍了一下中间件和洋葱模型的概念,然后我们手动实现了一个最基本的 Koa.js 框架,最后又看了一些比较常用的中间件,所以在本章当中,我们就来深入的了解一下 Koa.js 的源码,看看它与我们手动实现的版本有什么区别

常用中间件的实现

上一章 当中,我们简单的介绍了中间件的基本概念,以及洋葱模型,在最后我们也手动实现了一个简单的 compose() 方法,所以本章当中我们就主要手动的来实现一个最基本的 Koa.js 框架以及 Koa.js 当中一些比较常用的中间件的简单实现,比如 koa-loggerkoa-static

中间件

我们本章来探讨一下 Koa.js 当中的中间件,在使用 Koa.js 的过程当中,经常会接触到中间件这个概念,之前在学习 Redux 的过程当中,里面也有一个中间件(middleware)的概念,所以就打算抽点时间,整理一下中间件的相关概念,关于 Redux 当中的 middleware 会另起篇幅来进行介绍

Node.js 中的 Stream(流)

本章我们来看 Node.js 当中一个比较重要的概念,那就是 Stream,也就是所谓的流,那么什么是 Stream 呢?

Node.js 中的 HTTP 模块

HTTP 模块是 Node.js 中非常重要的一个核心模块,通过 HTTP 模块,可以使用其 http.createServer() 方法创建一个 HTTP 服务器,也可以使用其 http.request() 方法创建一个 HTTP 客户端,Node.jsHTTP 协议及相关 API 的封装比较底层,其仅能处理流和消息,对于消息的处理,也仅解析成『报文头』和『报文体』,但是不解析实际的报文头和报文体内容,这样不仅解决了 HTTP 原本比较难用的特性,也可以支持更多的 HTTP 应用

本文内容主要分为两部分『客户端』与『服务端』,我们下面就一个一个来进行了解

Node.js 中的模块机制

为了让 Node.js 的文件可以相互调用,Node.js 提供了一个简单的模块系统,模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的,换言之,一个 Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码、JSON 或者编译过的 C/C++ 扩展

Node.js 中的 Buffer 模块

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型,但在处理像 TCP 流或文件流时,必须使用到二进制数据,因此在 Node.js 中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区,但是在深入展开之前,我们先来了解一下 JavaScript 当中的 ArrayBuffer,来看看它与 Node.js 当中的 Buffer 到底有什么区别?

Node.js 中的 EventEmitter 模块

本章我们继续来看 Node.js 当中的 EventEmitter 模块,在 Node.js 当中许多对象都会分发事件,比如一个 net.Server 对象会在每次有新连接时触发一个事件,一个 fs.readStream 对象会在文件被打开的时候触发一个事件,然而所有这些产生事件的对象都是 events.EventEmitter 的实例

本文主要分为以下几个部分,首先先介绍一下 EventEmitter 类,然后简单的过一遍源码,最后在自己动手来实现一个简单的 EventEmitter 模块,下面就让我们一步一步来实现吧

什么是 Node.js

其实在工作过程中一直有个想法,就是好好地深入的去学习一下 Node.js,无奈各种工作,家庭,生活和一些其他的原因导致此事一直搁浅,之前也有零零散散的学过,但是都算不得上深入,框架的使用也都只是停留在会用的阶段,底层的实现也没有知根知底的去探个究竟

所以打算在这 2019 年剩下的一段时间里,静下心来好好地学一下 Node.js,补充一下相关知识和一些流行框架的内容,应该会是一个系列文章,记录的就是在学习 Node.js 过程当中的一些笔记,心得和想法吧,刚好也看到了 如何正确的学习 Node.js 这篇文章,就以这个为起点,从头开始吧

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×