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