Node.js概述
- Node.js運行在服務器端的JS解釋器,基於谷歌的V8引擎解釋器,可以實現服務端操作,例如數據庫操作,web服務器的創建。
- 對比JS和Node.js區別
- JS運行在客戶端瀏覽器,存在多款瀏覽器,代碼有兼容性問題;Node.js運行在服務器端,只有一個解釋器,代碼不存在兼容性問題
- 兩者都有自定義對象和內置對象,不同的宿主對象
- JS用於瀏覽器端的交互效果,Node.js用於服務器端操作,例如數據庫的操作,web服務器的創建等
- node.js下載地址
- 執行方式
node c:/xxx/../01.js
回車----腳本模式- 進入交互模式:
node
回車
退出交互模式:兩次ctrl+c
或者.exit
回車
- Node.js特點
- 簡單,避免過度設計
- 單線程邏輯處理
- 非阻塞的異步I/O處理
- 事件驅動編程
- 無鎖機制,不會產生死鎖
- 支持數萬個併發連接
- Node.js適合的搭建以IO操作爲主、響應速度塊、易於擴展的網絡應用:
- 命令行工具
- 帶有GUI界面的本地應用程序
- 交互式終端程序
- 單元測試工具
- 基於社交網絡的大規模Web應用
- Web Socket服務器
- TCP/UDP套接字程序
- 客戶端Javascript編譯器
- Node.js不捨和CPU密集型應用
- 深層次的嵌套和遞歸
- 複雜加密和解密算法
- 高可靠性運算
- 嚴格內存管理
- 數據挖掘和數據分析
全局對象-global
- Node.js:
在交互模式下創建的函數和聲明的變量都是全局global下的,可以使用global
訪問;例:global.a,global.fn()
在腳本模式下創建的函數和聲明的變量都不是全局global下的,都是局部的(原因在模塊中介紹) - JS:window
在JS下創建的函數和聲明的變量都是全局下的,可以使用全局對象window
來訪問;window.a,window.fn()
console對象
console.log(1);
//輸出日誌console.info(2);
//輸出消息console.warn(3);
//輸出警告console.error(4);
//輸出錯誤console.time()
開始計時console.timeEnd()
結束計時
開始和結束計時打印的內容要保持一致。
練習:查看循環10000次,for,while,do-while的耗時情況
porcess對象
process
表示進程的對象process.arch
查看CPU架構process.platform
查看當前操作系統process.version
查看當前nodejs版本號process.env
查看當前環境變量有哪些
buffer對象
- 緩衝區:在內存中臨時存儲數據的區域,通常網絡傳輸的數據都是在緩衝區。
- 創建Buffer
let buf=Buffer.alloc(5,'abcde');
- 轉爲字符串
buf.toString() String(buf)
模塊
- 就是一個獨立的功能體
- 在Node.js下規定,任意一個文件就是一個模塊
- 分爲自定義模塊、核心模塊、第三方模塊
- Node.js自動爲每一個文件添加了一個構造函數
(function (exports, require, module, __filename, __dirname) { //函數體內是程序員自己寫的代碼 //require:是一個函數,用於引入另一個模塊 //exports:是導出的對象,如果要導出內容,都是往這個對象中添加 })