socket.io, node.js, koa爲首的一些通訊框架和後端技術點。html
以後有必要過一遍《NodeJS 設計模式》。node
Ref: [Node.js] 01 - How to learn node.jsshell
① 短輪詢 - 服務器當即響應npm
② comet 長輪詢 - 服務器以爲有必要時(好比發生了變化)才響應編程
③ SSE - 支持了服務器端的推送json
④ WebSocket - 全雙工,http的擴展 - Netty, nodejs就是基於此技術的例子後端
使用了「包」,也就是require(<包>),也就談到了npm, package.json文件。設計模式
var http = require('http'); http.createServer( function (request, response) { // 發送 HTTP 頭部 // HTTP 狀態值: 200 : OK // 內容類型: text/plain response.writeHead (200, {'Content-Type': 'text/plain'}); // 發送響應數據 "Hello World" response.end ('Hello World\n'); }).listen(8888); // 終端打印以下信息 console.log('Server running at http://127.0.0.1:8888/');
與Unix環境系統編程的API很像。api
Ref: [Node.js] 02 - Read Eval Print Loop數組
var exec = require('child_process').exec; var shell = require("shelljs");
/**
* 參數處理模塊,變化多端
*/ var argv = require('yargs').argv;
Ref: [Node.js] 03 - Buffer, Stream and File IO
一個 Buffer 相似於一個整數數組,但它對應於 V8 堆內存以外的一塊原始內存。
一種功能更爲全面的Array。
Ref: Node.js v10.5.0 Documentation
var fs = require("fs");
文件讀寫 默認是異步。
文件流 與事件觸發相結合。
const os = require('os');
系統自己的API對接。
Ref: [Node.js] 04 - Event and Callback
Node.js 的每個 API 都是異步的
Node.js 基本上全部的事件機制都是用設計模式中觀察者模式實現。
var events = require('events'); var eventEmitter = new events.EventEmitter();
eventEmitter.on() # 綁定事件
eventEmitter.emit() # 觸發事件
參見連接中的:一個綜合性的例子
大多數時候咱們不會直接使用 EventEmitter,而是在對象中繼承它。
包括 fs、net、 http 在內的,只要是支持事件響應的核心模塊都是 EventEmitter 的子類。
舉例:老師喊一嗓子,觸發每一個學生對象喊一句「到」。
具體參見:[Node.js] 05 - Modules and Function
var util = require('util');
可見,node方式寫server之簡潔明瞭。
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');
Ref: [Node.js] 06 - Multi-thread and process module
微服務的容錯性 ----> Unity的自治思想
對比 Netty
Ref: [Node.js] 06 - Multi-thread and process module
JS自己的異步方法,以及node封裝的系統接口。
/* implement */
Express 與 Koa 實踐,包括涉及到的負載平衡以及相關方案。
如何作massive requests的壓力測試?
/* implement */