当前分类 / Nodejs / 总共3篇

Nodejs 框架 Koa 介绍和使用

对于 Nodejs 框架和开源软件来说,2018 年是非常有趣的一年。开发者社区讨论了企业赞助对开源项目的作用以及如何维护那些没有经济支持却有数百万人使用的项目。在 Github 星标数量方面,Sails、Koa 和 Express 明显高于其他框架。

Nodejs 框架的 Github star 数量统计

不得不说,Express 和 Koa 是 Nodejs 目前炙手可热的2大框架。

Express 诞生已有时日, 是一个基于 Nodejs 平台的极简、灵活的 web 应用开发框架,主要基于 Connect 中间件,并且自身封装了路由、视图处理等功能,使用人数众多。

Koa 相对更为年轻, 是 Express 原班人马基于 ES6 新特性重新开发的框架,主要基于 co 中间件,框架自身不包含任何中间件,很多功能需要借助第三方中间件解决,但是由于其基于 ES6 generator 特性的异步流程控制,解决了 “callback hell” 和麻烦的错误处理问题,大受开发者欢迎。

阅读更多

Nodejs实现的一个网络请求模块化基础案例

本篇文章是基于我前面写过的 《Nodejs 结构和创建》 的进一步实践。在我们面对复杂的业务逻辑的时候就需要一个更好的模块和分职责的结构,今天我们通过一个简单的案例来看看如何创建一个路由 Route 并在 Nodejs 中分离业务逻辑。

Nodejs 网络请求

前面提到过使用 Nodejs 启动一个服务很简单,例如我们启动一个默认端口是 3000 的服务:

var http = require('http');

http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write('<h1>Node.js</h1>');
    res.end('<p>Hello World</p>');
}).listen(3000);

console.log('HTTP server is listening at prot 3000.');

这些代码没啥特别的地方,可能这里大家比较好奇的是这个 http 模块到底是个什么,这个是 Nodejs 的一个内置的核心模块(模块和包的概念前面已经提到过了),Nodejs 内置核心模块清单如下:

模块名说明
http提供HTTP服务器功能。
url解析URL。
fs与文件系统交互。
querystring解析URL的查询字符串。
child_process新建子进程。
util提供一系列实用小工具。
path处理文件路径。
crypto提供加密和解密功能,基本上是对OpenSSL的包装。

阅读更多

Nodejs 结构和创建

本文参考自 《Nodejs 开发指南》 和 《Nodejs 实战》 两本书。

异步 I/O

Node.js 最大的特点就是采用了异步 I/O 与事件驱动的架构设计。

$.post('/resource.json', function(data){
    console.log(data);
})

这一小段代码是 jQuery 中的 Ajax 请求,我们知道这个结果函数是异步的,等服务器响应结果后才会执行。

对于一些高并发的需求,传统的解决方法是多线程模型,每个业务提供一个线程系统,通过切换和调度线程来实现高并发中的等待开销。但是这样做无疑又增加了线程管理和调度的开销。

Nodejs 采用的是单线程模型,对于所有的 I/O 操作(阻塞操作)都采用类似上面 Ajax 请求的异步的请求方式,避免了频繁切换线程。

Nodejs 的单线程模型

阅读更多