首頁  >  文章  >  web前端  >  nodejs模組的簡單理解(附範例)

nodejs模組的簡單理解(附範例)

不言
不言轉載
2019-03-29 09:19:542233瀏覽

這篇文章帶給大家的內容是關於nodejs模組的簡單理解(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

這個小短文用來快速理解 nodejs 模組(也就是 CommonJS 規範)。

本質

module.exports 用來暴露一個值,這個值預設是對象,也可以覆寫為原始值。

嘗試在一個檔案中直接log 出module 的值,可以得到:

{
  id: '.',
  exports: {}, // 默认空对象
  parent: null,
  filename: '/Users/a10.12/webpack-learning/src/module.js',
  loaded: false,
  children: [],
  paths:
   [ '...' ]
}

你需要透過修改module 的exports 屬性來輸出你需要輸出的東西,而 require 用來導入一個模組,module.exports 的值是什麼,require 拿到的就是什麼。

使用

例如有module.js

module.exports = {
  s: 2,
}

在index.js 中引入

let v = require('./module.js')

console.log(v) // 输出为 { s: 2 }

原始值的情況也一樣

module.exports = 2

let v = require('./module.js')

console.log(v) // 输出为 2

因為module.exports 預設是個對象,在輸出對象的時候自然有這麼一種寫法:

module.exports.s = 2

這樣require 得到的也是{ s: 2 }。

簡寫

大概是大佬們覺得module.exports 寫起來太長,於是把exports 引用到了module.exports,所以檢查這兩個東西是否相等時,返回 true:

console.log(exports === module.exports) // true

有了這個特性,在導出物件時能很方便地這麼寫:

exports.s = 2

let v = require('./module.js')

console.log(v) // 输出为 2

但是你卻不能這麼寫:

// 这样
exports = 2
// 或这样
exports = {
  s: 2,
}
// 都是不可以的

let v = require('./module.js')

console.log(v) // 输出为 {}

原因如同上面所說,exports 本來就只是一個對module.exports 的引用,你可以對這個引用的物件添加屬性,但是一旦用上面兩種方法覆寫了exports 對module.exports 的引用,exports 就等於無效了。

最後提醒,如果前面說的看不懂,可能需要加深對ECMAScript 引用值和原始值的理解...

這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的node.js教學影片專欄! ! !

#

以上是nodejs模組的簡單理解(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除