nodejs基礎知識點

var http = require("http");載入 http 模塊,並將實例化的 HTTP 賦值給變量 httpnode

使用 http.createServer() 方法建立服務器,並使用 listen 方法綁定 8888 端口web

函數經過 request, response 參數來接收和響應數據編程

可使用下劃線 _ 獲取上一個的結果服務器

ctrl + d 退出 Node 命令框架

.clear 退出多行表達式異步

Node.js 異步編程的直接體現就是回調.回調函數通常做爲函數的最後一個參數出現.異步編程

非阻塞調用,不須要等待文件讀取完,不須要按順序的,這樣就能夠在讀取文件時同時執行接下來的代碼,大大提升了程序的性能。函數

非阻塞式IO或者事件驅動IO,webserver一直接受請求而不等待任何讀寫操做。性能

var events = require('events');引入 events 模塊
var eventEmitter = new events.EventEmitter();建立 eventEmitter 對象網站

events 模塊只提供了一個對象: events.EventEmitter。
EventEmitter 的核心就是事件觸發與事件監聽器功能的封裝。

on(event, listener),on 函數用於綁定事件函數。接受一個字符串 event 和一個回調函數。

emit(event, [arg1], [arg2], [...]) 按參數的順序執行每一個監聽器

emit 屬性用於觸發一個事件
event.emit('some_event');   向 event 對象發送 some_event事件

once(event, listener)監聽器最多隻會觸發一次

listenerCount(emitter, event)返回指定事件的監聽器數量。

寫入緩衝區 len = buf.write("www.runoob.com");
從緩衝區讀取數據 buf.toString('ascii'))
將 Buffer 轉換爲 JSON 對象buf.toJSON()
緩衝區合併Buffer.concat([buffer1,buffer2])
緩衝區比較buffer1.compare(buffer2)
拷貝緩衝區buf2.copy(buf1, 2);//將 buf2 插入到 buf1 指定位置上 從0開始
緩衝區裁剪buffer1.slice(0,2)   實際是前兩個存在
緩衝區長度buffer.length


Stream 是一個抽象接口
建立可讀流var readerStream = fs.createReadStream('input.txt');

寫入流var writerStream = fs.createWriteStream('output.txt');
查看寫入的文件的內容 cat 文件名

讀取一個文件內容並將內容寫入到另一個文件中 readerStream.pipe(writerStream);

建立模塊,一個 Node.js 文件就是一個模塊
Node.js 提供了 exports 和 require 兩個對象,exports 是模塊公開的接口,require 用於從外部獲取一個模塊的接口 

var hello = require('./hello');  經過 require('./hello') 加載這個hello.js文件,就能夠訪問exports對象的成員函數
exports.world  把world當成訪問接口 

module.exports = Hello 在外部引用該模塊時,其接口對象就是要輸出的 Hello 對象自己,而不是原先的 exports。

若是要對外暴露屬性或方法,就用 exports 就行,要暴露對象(相似class,包含了不少屬性和方法),就用 module.exports。

匿名函數 不用給這個函數起名字,把一個函數做爲變量傳遞
 
Node.js 中的全局對象是 global
不可能在最外層定義變量,由於全部用戶代碼都是屬於當前模塊的,

永遠使用 var 定義變量以免引入全局變量,由於全局變量會污染命名空間

console.log( __filename );表示當前正在執行的腳本的文件名
console.log( __dirname );表示當前執行腳本所在的目錄。

setTimeout(cb, ms) 全局函數在指定的毫秒(ms)數後執行指定函數(cb)。:setTimeout() 只執行一次指定函數。

setInterval(cb, ms)同上,可是 會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。

console 用於提供控制檯標準輸出
console.log 接收若干 個參數,若是隻有一個參數,則輸出這個參數的字符串形式。
若是有多個參數,則 以相似於C 語言 printf() 命令的格式輸出。

var fs = require("fs")導入文件系統模塊(fs)

異步的方法函數最後一個參數爲回調函數,回調函數的第一個參數包含了錯誤信息(error)。比起同步,異步方法性能更高,速度更快,並且沒有阻塞。

打開文件fs.open('input.txt', 'r+', function(err, fd) 
'input.txt'文件的路徑。    r+以讀寫模式打開文件。若是文件不存在拋出異常。 回調函數,

獲取文件信息
fs.stat(path, callback)   文件路徑    回調函數

寫入文件fs.writeFile('input.txt', '我是通 過fs.writeFile 寫入文件的內容',  function(err)

讀取文件fs.read(fd, buf, 0, buf.length, 0, function(err, bytes)

關閉文件fs.close(fd, function(err)

截取文件  刪除文件 建立目錄fs.mkdir(path[, options], callback)  讀取/刪除目錄
 
獲取GET請求內容
URL是完整的請求路徑,包括了?後面的部分,所以你能夠手動解析後面的內容做爲GET請求的參數。
可使用 url.parse 方法來解析 URL 中的參數

經過 POST 提交併輸出數據

Express 是一個簡潔而靈活的 node.js Web應用框架,能夠快速地搭建一個完整功能的網站
靜態文件

router.get('/',service.showIndex)    路徑  業務方法

exports.showIndex=(req,res)=>{res.render('index',{list:data})} 

showIndex方法    'index',{list:data} 模板文件名稱 數據