基于Koa的微信第三方平台使用及搭建说明(一)

前言

公司内部使用说明文档,记录一下,目的在于使内部人员了解和熟悉项目,不在于搭建教程,看不明白的就别看了。

(一)关于 Node

Node是什么?官网上给出的定义是:“一个搭建在Chrome JavaScript运行时上的平台,用于构建高速、可伸缩的网络程序。Node.js采用的事件驱动、非阻塞I/O模型,使它既轻量又高效,并成为构建运行在分布式设备上的数据密集型实时程序的完美选择。”

推荐一本 node 学习的书:《node.js实战》 链接: https://pan.baidu.com/s/1uH4xcg7Itx_vZaksFPLTzg 提取码: 4q13
《node.js》实战

Node 特点

  1. node 是一个 javascript 的运行环境
  2. 依赖于Chrome V8引擎进行代码解释
  3. 单线程(因为js本身就是单线程)
  4. 异步,事件驱动
  5. 非阻塞I/O
  6. 轻量级

Node 优点

  1. 高并发(最主要优点)
  2. 适合 I/O 密集型应用

Node 缺点

  1. 不适合 CPU 密集型应用,CPU 密集型应用给 Node 带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起,解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;
  2. 只支持单核CPU,不能充分利用CPU
  3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃,这是单线程造成的,解决方案:Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;
  4. ** 异步操作导致的回调嵌套过多,需要拆解的 function 就很多,看起来很复杂,我目前代码读不懂的原因大概就是这个。**

(二)关于 Express

Express 就是别人造好的轮子,为我们封装了一些实用的工具,比如接收一个 GET 请求,原生 Node 是这样写的:

var http = require('http');
http.createServer(function(req,res){
if(req.url === '/'){
	res.writeHead(200,{'Content-Type':'text/plain'});
	res.end('Hello World');
}
});
http.listen(8081);

使用 Express 可以这样写

var express = require('express');
var app = express();
app.get('/', function (req, res) {
   res.send('Hello World');
})
var server = app.listen(8081)

express 已有些年代,是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,主要基于 Connect 中间件,并且自身封装了路由、视图处理等功能,使用人数众多。

(三)关于 Koa2.0

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

koa2.0 需要 node8.0 以上版本,因为 node8.0 以上版本开始支持 async/awwait,这是koa2.0最精髓的部分。

(四)Koa2.0 和 Express 的区别

  • Express 采用 callback 来处理异步,Koa 摒弃了"回调",Koa1.0采用了 ES6 的 generator 语法,Koa2.0 采用了 async/await 语法
  • Koa 相比 Express 更小,Express主要基于Connect中间件框架,功能丰富,随取随用,并且框架自身封装了大量便利的功能,比如路由、视图处理等等,而 Koa 不绑定任何中间件,不提供任何工具,需要什么工具就去 require

猜你喜欢

转载自my.oschina.net/u/3026577/blog/2885344