摘要:什么是nodeNode是基于Chrome V8 解析引擎之上構(gòu)建的一個(gè)JavaScript運(yùn)行時(shí)環(huán)境,或者說(shuō)平臺(tái)在node中,可以使用JavaScript語(yǔ)言進(jìn)行編譯把Node是一個(gè)平臺(tái),讓JavaScript可以脫離瀏覽器環(huán)境運(yùn)行Node自身使用C++ 語(yǔ)言寫(xiě)出了很多系統(tǒng)級(jí)別相關(guān)的API,暴露了一些JavaScript環(huán)境APInpm:包管理工具npm是一個(gè)用來(lái)托管基于node開(kāi)發(fā)包的是一個(gè)命令
什么是node
Node是基于Chrome V8 解析引擎之上構(gòu)建的一個(gè)JavaScript運(yùn)行時(shí)環(huán)境,或者說(shuō)平臺(tái)在node中,可以使用JavaScript語(yǔ)言進(jìn)行編譯把
Node是一個(gè)平臺(tái),讓JavaScript可以脫離瀏覽器環(huán)境運(yùn)行
Node自身使用C++ 語(yǔ)言寫(xiě)出了很多系統(tǒng)級(jí)別相關(guān)的API,暴露了一些JavaScript環(huán)境API
npm:包管理工具npm
是一個(gè)用來(lái)托管基于node開(kāi)發(fā)包的
是一個(gè)命令行工具,可以用來(lái)下載npm網(wǎng)絡(luò)上托管的Node包
有了npm,直接拿來(lái)解決問(wèn)題,更加專注于業(yè)務(wù)處理
Node的特點(diǎn):
event——driven:事件驅(qū)動(dòng)
non-blocking I/O model :非阻塞IO模型
文件IO、網(wǎng)絡(luò)IO基本山都是異步的
在Node中有各種花式回調(diào)
Node采用的是事件驅(qū)動(dòng)和非阻塞IO模型使它本身非常的輕量級(jí)和高效
Node總結(jié)
Node是基于Chrome V8引擎,一個(gè)JavaScript運(yùn)行環(huán)境
驗(yàn)證node版本 node -v
操作方法
創(chuàng)建http服務(wù)器得到一個(gè)服務(wù)器實(shí)例對(duì)象
var http = reauire('http') var server = http.createServer()
給Server對(duì)象添加request事件處理函數(shù):回調(diào)函數(shù)有兩個(gè)參數(shù)
1 Request:用來(lái)獲取當(dāng)前客戶端的請(qǐng)求信息,可以獲取客戶端請(qǐng)求中的url請(qǐng)求地址、查詢字符串、post請(qǐng)求提交
2 Response:也是一個(gè)對(duì)象,一般用來(lái)給本次請(qǐng)求發(fā)送響應(yīng)數(shù)據(jù)
通過(guò)Server對(duì)象的listen函數(shù),設(shè)置一個(gè)監(jiān)聽(tīng)的端口號(hào),啟動(dòng)服務(wù)器
服務(wù)器開(kāi)啟監(jiān)聽(tīng)成功后,會(huì)觸發(fā)該回調(diào)函數(shù)
path環(huán)境變量
配置用戶環(huán)境變量 快速啟動(dòng)
Node中的JavaScript
REPL運(yùn)行環(huán)境
R: read
E: Eval
P: Print
L: loop
ECMAscript
Node對(duì)最新的ECMAscript語(yǔ)言標(biāo)準(zhǔn)支持的非常好
Node除了官方的ECMAscript語(yǔ)言規(guī)范,同時(shí)將console對(duì)象、定時(shí)器等函數(shù)也移植到NOde中
全局對(duì)象
global:相對(duì)于瀏覽器中的全局對(duì)象window,全局作用域和模塊作用域的概念
Console
process:進(jìn)程對(duì)象,對(duì)應(yīng)著的是瀏覽器中的window對(duì)象
Buffer
Node中的模塊系統(tǒng)
Node天生就已經(jīng)實(shí)現(xiàn)了一個(gè)模塊系統(tǒng)解決方案
每個(gè)文件對(duì)外接口是module.exports
向當(dāng)前運(yùn)行終端輸出一些內(nèi)容
process.stdout.write接收終端輸入的內(nèi)容
當(dāng)程度啟動(dòng),當(dāng)前應(yīng)用程序就保持掛起 等待用戶輸入內(nèi)容
process.stdin.on('data', function (data) { })
模塊系統(tǒng)
模塊系統(tǒng)解決方案
Node基于CommonJS規(guī)范實(shí)現(xiàn)了自己的一套模塊系統(tǒng)規(guī)范
文件模塊
用戶編寫(xiě)的模塊
第三方模塊
一般就是通過(guò)npm install安裝的模塊就是第三方模塊
npm 本地安裝 全局安裝
npm install 包名 --global|-g 全局安裝
nodemon
可以實(shí)現(xiàn)文件代碼改變
htp-server
可以實(shí)現(xiàn)快速啟動(dòng)服務(wù)器
使用npm root -g 可以查看全局命令行工具的安裝
brower-sync
前端可視化開(kāi)發(fā)
git bash here
touch 新建一個(gè)文件
cat 查看文件
vi (文件名)
按less (文件名)按q退出
yy 在編輯模式中是復(fù)制 p是粘貼
文件操作
path
使用是進(jìn)入node環(huán)境,然后開(kāi)始使用
同步、異步調(diào)用
同步調(diào)用代碼會(huì)阻塞后續(xù)代碼的繼續(xù)執(zhí)行,沒(méi)有異步API執(zhí)行效率高,但是寫(xiě)起來(lái)爽
同步操作API需要使用try catch捕獲異常
readFileSync('./REEADEME.md', 'utf8')
異步API一般都是通過(guò)回調(diào)函數(shù)的形式來(lái)獲取執(zhí)行結(jié)果
異步API無(wú)法通過(guò)try catch來(lái)捕獲異常,一般在愛(ài)回調(diào)函數(shù)中,node會(huì)給你提供了一個(gè)err對(duì)象,你可以通過(guò)判斷回調(diào)函數(shù)的第一個(gè)參數(shù)err來(lái)看看是否有異常發(fā)生
能使用異步API的情況下,少使用同步的
highlight.js markdown高亮
promise
then里邊有三種結(jié)果
then可以多次鏈?zhǔn)秸{(diào)用
每一個(gè)then 中的回調(diào)函數(shù)的結(jié)果取決于上一then的返回值
then里邊不返回任何東西,默認(rèn)就是undefined
then里面顯示的調(diào)用了return下一個(gè)then得到的就是上一個(gè)then的return結(jié)果
在一個(gè)then里面返回一個(gè)新的Promise對(duì)象