摘要:在博客閱讀這個(gè)小短文用于快速理解模塊也就是規(guī)范。本質(zhì)用于暴露一個(gè)值,這個(gè)值默認(rèn)是對(duì)象,也可以覆蓋為原始值。最后提醒,如果前面說的看不懂,可能需要加深對(duì)引用值和原始值的理解
在博客閱讀:https://ssshooter.com/2019-03...
這個(gè)小短文用于快速理解 nodejs 模塊(也就是 CommonJS 規(guī)范)。
本質(zhì)module.exports 用于暴露一個(gè)值,這個(gè)值默認(rèn)是對(duì)象,也可以覆蓋為原始值。
嘗試在一個(gè)文件中直接 log 出 module 的值,可以得到:
{ id: ".", exports: {}, // 默認(rèn)空對(duì)象 parent: null, filename: "/Users/a10.12/webpack-learning/src/module.js", loaded: false, children: [], paths: [ "..." ] }
你需要通過修改 module 的 exports 屬性來輸出你需要輸出的東西,而 require 用于導(dǎo)入一個(gè)模塊,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
因?yàn)?module.exports 默認(rèn)是個(gè)對(duì)象,在輸出對(duì)象的時(shí)候自然有這么一種寫法:
module.exports.s = 2
這樣 require 得到的也是{ s: 2 }。
簡(jiǎn)寫大概是大佬們覺得 module.exports 寫起來太長(zhǎng),于是把 exports 引用到了 module.exports,所以檢查這兩個(gè)東西是否相等時(shí),返回 true:
console.log(exports === module.exports) // true
有了這個(gè)特性,在導(dǎo)出對(duì)象時(shí)能很方便地這么寫:
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 本來就只是一個(gè)對(duì) module.exports 的引用,你可以對(duì)這個(gè)引用的對(duì)象添加屬性,但是一旦用上面兩種方法覆蓋了 exports 對(duì) module.exports 的引用,exports 就等于無效了。
最后提醒,如果前面說的看不懂,可能需要加深對(duì) ECMAScript 引用值和原始值的理解...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/103115.html
摘要:在前面的節(jié)課程里面,我們已經(jīng)基本學(xué)習(xí)完了的知識(shí),達(dá)到基礎(chǔ)入門的要求。英語(yǔ)的直譯就是表現(xiàn)層狀態(tài)轉(zhuǎn)移。的特點(diǎn)不加密用戶可刪除可被修改依賴于用戶禁用或清除時(shí),讀取出錯(cuò)。下節(jié),會(huì)開始學(xué)習(xí)框架。 在前面的12節(jié)課程里面,我們已經(jīng)基本學(xué)習(xí)完了nodejs的知識(shí),達(dá)到基礎(chǔ)入門的要求。那為什么會(huì)在這節(jié)說下使用nodejs來實(shí)現(xiàn)一些功能,而不繼續(xù)往下講呢?原因有2:1.前面講地都是理論知識(shí),碼代碼比較少...
摘要:特性單線程說明也許你會(huì)問,為什么還不安裝還不寫代碼還不講模塊前面我說過,不會(huì)一來就。另外,單線程中,操作系統(tǒng)沒有創(chuàng)建銷毀線程的時(shí)間開銷。單線程缺點(diǎn)如果有用戶造成線程崩潰,那個(gè)整個(gè)系統(tǒng)都崩潰了。 nodejs特性1--單線程 說明:也許你會(huì)問,為什么還不安裝nodejs?還不寫代碼?還不講模塊?前面我說過,不會(huì)一來就hello world。而是會(huì)先跟大家講講nodejs的特點(diǎn),只有大家明...
摘要:體驗(yàn)優(yōu)先的單頁(yè)框架點(diǎn)此查看倉(cāng)庫(kù)是專為單頁(yè)應(yīng)用而設(shè)計(jì)的基于頁(yè)面模塊化的框架,它可使開發(fā)者快速開發(fā)單頁(yè)應(yīng)用。使用前置要求此框架的使用者可不需了解構(gòu)建工具,但必須掌握和的基礎(chǔ)知識(shí)。 showImg(https://segmentfault.com/img/bV2wO3?w=792&h=303); Amaple · 體驗(yàn)優(yōu)先的JavaScript單頁(yè)框架 Amaple (點(diǎn)此查看Github倉(cāng)...
摘要:體驗(yàn)優(yōu)先的單頁(yè)框架點(diǎn)此查看倉(cāng)庫(kù)是專為單頁(yè)應(yīng)用而設(shè)計(jì)的基于頁(yè)面模塊化的框架,它可使開發(fā)者快速開發(fā)單頁(yè)應(yīng)用。使用前置要求此框架的使用者可不需了解構(gòu)建工具,但必須掌握和的基礎(chǔ)知識(shí)。 showImg(https://segmentfault.com/img/bV2wO3?w=792&h=303); Amaple · 體驗(yàn)優(yōu)先的JavaScript單頁(yè)框架 Amaple (點(diǎn)此查看Github倉(cāng)...
閱讀 2508·2021-10-11 10:59
閱讀 2700·2021-09-22 15:49
閱讀 2637·2021-08-13 13:25
閱讀 1285·2019-08-30 13:14
閱讀 2386·2019-08-29 18:45
閱讀 2990·2019-08-29 18:36
閱讀 1482·2019-08-29 13:21
閱讀 1157·2019-08-26 11:44