單線程 單進程 非阻塞 事件驅動。html
句柄就是函數node
事件驅動模型mysql
事件源-》觸發事件《-》監聽事件程序-》事件處理程序es6
路徑的要求不嚴格web
node的知識點:正則表達式
1. node的http模塊,sql
var http = require('http');mongodb
http.createServer(function(req, res){express
res.writeHeader(200, {'Content-Type': 'text/plain'}); //寫入文件頭npm
res.end('Hello World!'); //瀏覽器中的輸出
}).listen('8888');
2. fs模塊的方法
能夠讀取文件、文件夾,建立刪除文件、文件夾,截取文件內容,修改權限、羣組等,用的時候再看吧,這裏會用到buffer,具體的不清楚呢?
讀取文件模塊 readFile,readFileAync
var fs = require('fs');
fs.readFile('input.txt', function(err, data){ //異步讀取文件
console.log(data);
})
var data = fs.readFileAync('input.txt'); //同步讀取文件
console.log(data);
fs的stream流, createReadStream(), createWriteStream()
var fs = require('fs');
var data = '';
var readStream = fs.createReadStream('input.txt'); //這個異步執行的, 按順序放到事件執行隊列中
readStream.on('data', function(chunk){
data += chunk;
})
readStream.on('end', function(){
console.log(data);
})
readStream.on('error', function(err){
console.log(err.stack);
})
var writeStream = fs.createWriteStream('input.txt');
writeStream.end();
writeStream.on('finish', function(){
console.log('寫入完成');
})
writeStream.on('error', function(err){
console.log(err.stack);
})
3. buffer 理解就是一個存儲類型,和Array相似,只是能夠存儲二進制數據,而且能夠指定數據格式
4. events 對象,內部只有一個EmitterEvent方法
var events = require('events').EventEmitter;
var eventsEmitter = new events();
eventsEmitter.on('eventName', functionName);
eventsEmitter.addListener('eventName', functionName); //on 和 addListener效果是同樣的
每種方法的添加事件數量默認是10個,若是超過10個會有警告,能夠修改這個默認數量
eventsEmitter.setMaxListeners(21);
url.parse(string).query | url.parse(string).pathname | | | | | ------ ------------------- http://localhost:8888/start?foo=bar&hello=world --- ----- | | | | querystring.parse(queryString)["foo"] | | querystring.parse(queryString)["hello"]
showHidden 是一個可選參數,若是值爲 true,將會輸出更多隱藏信息。
depth 表示最大遞歸的層數,若是對象很複雜,你能夠指定層數以控制輸出信息的多 少。若是不指定depth,默認會遞歸2層,指定爲 null 表示將不限遞歸層數完整遍歷對象。 若是color 值爲 true,輸出格式將會以ANSI 顏色編碼,一般用於在終端顯示更漂亮 的效果。
util.isArray(object),若是給定的參數 "object" 是一個數組返回true,不然返回false。
util.isDate(object),若是給定的參數 "object" 是一個日期返回true,不然返回false。
util.isRegExp(object),若是給定的參數 "object" 是一個正則表達式返回true,不然返回false。
util.isError(object),若是給定的參數 "object" 是一個錯誤對象返回true,不然返回false。
更多詳情能夠訪問 http://nodejs.org/api/util.html 瞭解詳細內容。
console.log('操做系統的默認臨時文件夾: ', os.tmpdir());
console.log(' CPU 的字節序: ', os.endianness());
console.log('操做系統的主機名: ', os.hostname());
console.log('操做系統名: ', os.type());
console.log('操做系統名: ', os.platform());
console.log('操做系統 CPU 架構: ', os.arch());
console.log('操做系統的發行版本: ', os.release());
console.log('操做系統運行的時間,以秒爲單位: ', os.uptime());
console.log('一個包含 一、五、15 分鐘平均負載的數組: ', os.loadavg());
console.log('系統內存總量,單位爲字節: ', os.totalmem());
console.log('操做系統空閒內存量,單位是字節: ', os.freemem());
console.log('返回一個對象數組,包含所安裝的每一個 CPU/內核的信息:型號、速度(單位 MHz)、時間(一個包含 user、nice、sys、idle 和 irq 所使用 CPU/內核毫秒數的對象): ', os.cpus());
console.log('得到網絡接口列表: ', os.networkInterfaces());
Express 是一個簡潔而靈活的 node.js Web應用框架, 提供了一系列強大特性幫助你建立各類 Web 應用,和豐富的 HTTP 工具。
使用 Express 能夠快速地搭建一個完整功能的網站。
Express 框架核心特性:
能夠設置中間件來響應 HTTP 請求。
定義了路由表用於執行不一樣的 HTTP 請求動做。
能夠經過向模板傳遞參數來動態渲染 HTML 頁面。
須要結合三個中間件,分別是body-parser, cookie-parser, multerbody-parser - node.js 中間件,用於處理 JSON, Raw, Text 和 URL 編碼的數據。
cookie-parser - 這就是一個解析Cookie的工具。經過req.cookies能夠取到傳過來的cookie,並把它們轉成對象。
multer - node.js 中間件,用於處理 enctype="multipart/form-data"(設置表單的MIME編碼)的表單數據。
HTTP 方法
如下爲 REST 基本架構的四個方法:
GET - 用於獲取數據。
PUT - 用於更新或添加數據。
DELETE - 用於刪除數據。
POST - 用於添加數據
還有一個patch只更新服務器上的一個資源的一個屬性
restful的思想可擴展性,並向後兼容,通常使用在url中包含版本信息的方式。
分析記錄優化性能
狀態碼304緩存,302重定向