基於Koa的微信第三方平臺使用及搭建說明(一)

前言

公司內部使用說明文檔,記錄一下,目的在於使內部人員瞭解和熟悉項目,不在於搭建教程,看不明白的就別看了。javascript

(一)關於 Node

Node是什麼?官網上給出的定義是:「一個搭建在Chrome JavaScript運行時上的平臺,用於構建高速、可伸縮的網絡程序。Node.js採用的事件驅動、非阻塞I/O模型,使它既輕量又高效,併成爲構建運行在分佈式設備上的數據密集型實時程序的完美選擇。」java

推薦一本 node 學習的書:《node.js實戰》 連接: https://pan.baidu.com/s/1uH4xcg7Itx_vZaksFPLTzg 提取碼: 4q13
《node.js》實戰node

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 是這樣寫的:web

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 能夠這樣寫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最精髓的部分。app

(四)Koa2.0 和 Express 的區別

  • Express 採用 callback 來處理異步,Koa 摒棄了"回調",Koa1.0採用了 ES6 的 generator 語法,Koa2.0 採用了 async/await 語法
  • Koa 相比 Express 更小,Express主要基於Connect中間件框架,功能豐富,隨取隨用,而且框架自身封裝了大量便利的功能,好比路由、視圖處理等等,而 Koa 不綁定任何中間件,不提供任何工具,須要什麼工具就去 require
相關文章
相關標籤/搜索