node初體驗(一)

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的屬性保存

  • a=0 ,這時候是全局變量 | var a=0,這時候是局部變量

-在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()

結論(區別)

  • exports在以對象形式{}導出的時候會報錯
  • 在以對象形式導出時module.exports沒有修改地址,exports修改地址

12.包(包規範由包結構和包描述文件組成)

包結構(包中各類文件)

  • package.json 包的描述文件
  • bin 可執行二進制文件
  • lib js(第三方依賴庫)
  • doc 文檔
  • test 單元測試

包描述文件

描述包的相關信息,供外部讀取分析

相關文章
相關標籤/搜索