一、Node.js概述:
①Node.js是使用C++編寫的基於V8引擎的js運行時環境。——js解釋器
②Node.js是一門後端編程語言,基於ECMAScript的,提供了不少前端js中沒有的擴展對象。——後端編程語言
前端js中的對象:
1)ES原生對象:String、Number、Math、Date、Error、RegExp、Function、Array、Boolean、Object
2)BOM&DOM
3)自定義對象
Node.js中的對象:
1)ES原生對象
2)Node.js核心對象
3)大量的第三方對象
4)自定義對象
③Node.js能夠編寫獨立的web服務器端應用,無需藉助於任何其餘web服務器。——web服務器
Node.js的意義:
1)執行效率高
2)使用一門語言統一了先後端開發——基於ES ——》 全棧工程師
Node.js的特色:
1)單線程邏輯處理
2)非阻塞
3)異步I/O處理
4)事件驅動編程
二、Node.js的兩種運行模式:
①交互模式——用於測試
在交互模式下,Node.js自帶的模塊無需引入,直接使用。
執行方法:輸入js語句,回車執行
②腳本模式——用於開發
把要執行的js語句編寫在一個文本文件中 ,一次性的提交給nodejs解釋器執行。這個文本文件能夠是.js結尾的,也能夠是沒有後綴的。
在腳本模式下,除了全局對象的成員外,全部其餘模塊和方法必須使用require()引入。
執行方法:node 文件路徑
注意:Node.js中沒有BOM和DOM對象!
三、Node.js的基礎語法和ES6新特性
①數據類型
1)原始類型
原始類型的數據直接賦值就能夠:string、number、boolean、null、undefined
2)引用類型——對象類型
包含ES原生對象、Node.js對象、自定義對象: 引用類型數據通常使用new關鍵字建立
②模板字符串
ES6中提供的一種新的字符串形式。
1)使用模板字符串定義的字符串,數據能夠實現換行 // `內容:${變量}`
2)能夠在模板字符串內部進行變量之間的運算 //`內容:${變量+變量}`
③嚴格模式:是ES5新增的比普通模式更加嚴格的一種js運行模式。——全新的模式
使用方法:2個範圍
1)是整個腳本文件的起始啓用嚴格模式
在腳本文件開頭:"use strict";
2)在單個函數中啓用嚴格模式。
function(){ "use strict"; ......}
嚴格模式的規格:
1)修改常量的值是非法的。——將靜默失敗升級爲錯誤
2)不容許對未聲明的變量賦值
3)匿名的this再也不指向全局,是undefined
④變量的做用域
全局做用域、局部做用局(函數做用局)、塊級做用域
塊級做用域:只能在當前代碼塊中使用
代碼塊:任何一個大括號{}就是一個「代碼塊」,if/for/while,每個代碼塊就是一個獨立的做用域
在代碼塊中使用let聲明塊級做用域變量,出了塊,就不能訪問。
⑤邏輯結構
(1)循環結構前端
for....of...——ES6新特性(遍歷數組的元素值)
(2)選擇結構
⑥函數
匿名函數的自調node
箭頭函數 =>
箭頭函數僅在匿名函數中使用;箭頭函數多用於回調函數中 ()=>{}
使用箭頭函數實現閉包
⑦對象
對象的分類:
(1)ES原生對象
(2)Node.js核心對象
(3)大量的第三方對象
(4)自定義的對象
建立對象的四種方式:
(1)對象直接量
(2)構造函數的方式
(3)原型繼承方式
(4)class方式——ES6新特性
class,類,一組類似對象的屬性和行爲的抽象集合
instance,實例化,是從屬於某一個類的具體對象
class Emp{
constructor(ename){
this.ename=ename;
}
work(){}
}
使用class定義的對象,如何實現繼承:
class Programmer extends Emp{
constructor(ename,salary,skills){
super(ename,salary);
this.skills=skills;
}
work(){
return super.work()+'He\'s skills is '+this.skills;
}
}
四、全局對象
Node.js中的全局對象爲Global
在交互模式下,聲明的全局變量和函數,都是global對象的成員——全局對象污染
在腳本模式下,聲明的全局變量和函數,不是global對象的成員——避免全局對象污染
Global對象的成員屬性和成員方法:
①console 向stdout(標準輸出)和stderr(標準錯誤)中輸入信息
console.log() & console.info() 向stdout輸出日誌信息
console.error() & console.warn() 向stderr輸出錯誤信息
console.trace() 向stderr輸出棧軌跡信息
console.dir() 向stdout輸出指定對象的字符串表示
console.assert() 斷言,爲真的斷言,錯誤信息不回輸出,爲假的斷言,拋出錯誤對象,輸出錯誤信息,而且終止腳本運行。錯誤信息能夠自定義。
console.time() 測試代碼的執行時間
console.timeEnd()
注意:console對象的方法是異步的,書寫順序不必定和執行結果順序一致
②process 進程
process.arch //獲取CPU架構類型
process.platform //獲取操做系統類型
process.env //獲取操做系統的環境變量
process.cwd() //獲取當前所在的工做目錄
process.execPath //獲取node解釋器所在目錄
process.versions //獲取node版本信息
process.uptime() //獲取node進程運行時間(s)
process.memoryUsage() //獲取node進程的內存使用狀況
process.pid //獲取當前進程id號
process.kill(pid) //向指定進程id號發送退出信號
③定時器
setTimeout() //一次性定時器
setInterval() //週期性定時器
setImmediate() //下次事件循環開始前當即執行的計時器
process.nextTick() //本次事件循環結束後當即執行的計時器
mysql
Node.js的模塊系統:
Node.js中使用"Module(模塊)"來規劃不一樣的功能對象。
模塊的分類:
(1)核心模塊——nodejs的內置模塊
(2)第三方模塊——例如:mysql模塊,本身下載
(3)自定義模塊
每個被加載的.js文件對應一個模塊對象,包含相應的功能和函數。
模塊中聲明的變量或函數的做用域是「模塊做用域」,不是golbal的成員,默認只能在當前js文件(即當前模塊)中使用。
Node.js啓動時運行的第一個模塊,成爲「主模塊」。——mail module,也是自身模塊。除主模塊以外的其餘模塊,稱爲「子模塊」。
nodejs官網:nodejs.orgweb