1.node.js是一個構建在chrome V8引擎上的javascript運行環境javascript
2.node.js特色:單線程、事件驅動、非阻塞IO模型、輕量java
3.node.js是單線程的(多個請求都是一個線程在處理)node
4.事件驅動是node.js底層機制,有一個事件環,保證node.js能夠高效準確的運行而不會錯亂chrome
5.模塊化:json
優勢:瀏覽器
問題:模塊化
標準的制定:函數
6.在node中,一個js文件就是一個模塊,每個js文件中的代碼都是獨立運行在一個函數中的,而不是在全局做用域,因此說一個模塊中的變量和函數在其它模塊中是沒法訪問的單元測試
7.經過require()函數來引入外部的模塊,使用require()引入模塊後,會返回一個對象,這個對象表明的是被引入的模塊測試
8.模塊分紅兩大類(模塊標識就是require()裏面的字符串)
由node提供的模塊,核心模塊的標識就是模塊的名字
由用戶本身建立,文件模塊的標識就是文件的路徑
9.經過exports來向外暴露變量和方法
10.在node中有一個global,做用和瀏覽器中的window相似,在全局中建立的變量都會做爲global的屬性保存
-在node執行模塊中的代碼時,它會首先在代碼的最頂部,添加以下代碼
function (exports,require,module,__filename,__dirname){ 內部是咱們本身編寫的代碼
export(export是module.export屬性)
require
module
__filename
__dirname
在代碼的最底部添加以下代碼
}
11.export和module.export區別
ModuleG.js代碼
var x = "ModuleG x" var y = "ModuleG y" function fun() { console.log("ModuleG fun is called") } //向外暴露 // exports.x = x // exports.y = y // exports.fun = fun // module.exports.x = x // module.exports.y = y // module.exports.fun = fun // OK // module.exports = { // x, y, fun // } // error exports = { x, y, fun }
ModuleF.js代碼
var moduleG = require("./ModuleG") console.log(moduleG.x) console.log(moduleG.y) moduleG.fun()
12.包(包規範由包結構和包描述文件組成)
描述包的相關信息,供外部讀取分析