Nodejs是什么:
-
解析執(zhí)行JS,不包括DOM、Style等;
- 是一個(gè)構(gòu)建與 Chrome V8 引擎之上的一個(gè)JavaScript運(yùn)行時(shí)環(huán)境
- Node 可以像瀏覽器一樣去解析和執(zhí)行JavaScript代碼;
- Chrome V8引擎是所有瀏覽器里面解析和執(zhí)行 JS 代碼塊 最快的;
- 在Node中,沒(méi)有界面,不再需要關(guān)心HTML、CSS
- 和DOM style沒(méi)有任何關(guān)系;只需要關(guān)注JavaScript;ECMAScript;
- 文件操作
- 網(wǎng)絡(luò)操作
- 讓JavaScript代碼具有了服務(wù)器編程能力
-
NodeJS的特性:
- 事件驅(qū)動(dòng)
- 非阻塞IO模型:大量的異步編程接口;NodeJS中充滿了類(lèi)似于ajax 一樣的API,回答函數(shù);
- 快平臺(tái)
- 單線程
- 輕量和高效
-
npm 是世界上最大的開(kāi)源庫(kù)生態(tài)系統(tǒng)
- npm 上發(fā)布的第三方包已經(jīng)接近35萬(wàn)個(gè)之多
NodeJS可以做什么
- NodeJS為JavaScript提供了服務(wù)端編程的能力(不處理UI);
- Java、PHP、Python、。net、Ruby等 做的Node都能做
- 網(wǎng)站開(kāi)發(fā),提供網(wǎng)站服務(wù)端
- 具有與數(shù)據(jù)庫(kù)交互的能力
- 移動(dòng)應(yīng)用,網(wǎng)絡(luò)游戲等需要服務(wù)的地方Node都可以做;
- CLI(Command Line Interface)命令行接口程序
- 例如:Gulp、hexo、git等
- Node 具有開(kāi)發(fā)命令行工具的能力;
Node的應(yīng)用場(chǎng)景
- Node是前端進(jìn)階必備的一個(gè)能力;
- 對(duì)IO操作比較頻繁;IO:input、 output
- 文件讀取
- 和數(shù)據(jù)庫(kù)交互:網(wǎng)絡(luò)數(shù)據(jù)IO
一些資源
- 樸靈:《深入淺出Node.js》原理性,阿里出品
- 阮一峰的Node.js
- Node入門(mén),nodebegin.org/index-zn-cn 強(qiáng)烈推薦
Node 程序的運(yùn)行
- 在終端的任何目錄下輸入
node命令,都可以執(zhí)行node.exe程序- 核心就在于通過(guò)操作系統(tǒng)
- 參數(shù)
Node中的ECMAScript
- Node中的window 是 global
Node核心模塊
- Node把絕大多數(shù)的API,都封裝到了一份具名的核心模塊了,例如文件操作的
fs; 網(wǎng)絡(luò)操作的http等; - 也就是說(shuō),使用核心模塊,必須先加載才可以使用;
核心模塊以位移的標(biāo)識(shí)名稱(chēng)進(jìn)行暴露,使用時(shí),通過(guò)
require進(jìn)行引入
var name = require('唯一標(biāo)識(shí)的模塊名稱(chēng)');
在Node中使用第三方包
- 通過(guò) npm 下載
- 通過(guò) rquire 函數(shù)引包
- 查看第三方的API,try-try-see;
用戶自定義模塊
- 在Node中,也提供了一種所謂的JavaScript模塊化解決方案,(類(lèi)似以requireJS);
小知識(shí)點(diǎn)
- chrome瀏覽器每次會(huì)發(fā)送兩次請(qǐng)求,一次請(qǐng)求icon;一次請(qǐng)求數(shù)據(jù);
/a
/favicon.ico
- Node 獲取請(qǐng)求路徑 var url = res.url;
- 不同的響應(yīng)頭
//HTML格式,網(wǎng)頁(yè)面中寫(xiě)數(shù)據(jù)的時(shí)候不會(huì)出現(xiàn)中文亂碼;
res.writeHead(200,{
'Content-Type':'text/html;charset=utf-8'
});
res.writeHead(200,{
//響應(yīng)的內(nèi)容是簡(jiǎn)單文本
'Content-Type':'text/plain; charset=utf-8'
})
-
./data/a.txt = data.a.txt; - 如果 fs.readFile('/data/a.txt');則去腳本文件的根路徑下面去找 C/data/a.txt文件
- 數(shù)組轉(zhuǎn)換成字符串 JSON.stringfy(array);
-
res.end(data)===res.write(data) res.end();