首頁 > web前端 > js教程 > 主體

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

不言
發布: 2019-03-29 09:19:54
轉載
2265 人瀏覽過

這篇文章帶給大家的內容是關於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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板