require導(dǎo)入module.exports 或 exports導(dǎo)出的使用方法
一、CommonJS 的導(dǎo)入和導(dǎo)出
1.定義
CommonJS 是一種用于 JavaScript 的模塊化規(guī)范,用于在服務(wù)端環(huán)境和舊版瀏覽器中組織和管理代碼。它定義了模塊的導(dǎo)入(require)和導(dǎo)出(module.exports 或 exports)方式,并支持同步加載模塊。
2.特點(diǎn)和使用方法
1.導(dǎo)入模塊:
使用 require 函數(shù)來(lái)導(dǎo)入模塊。
可以通過(guò)相對(duì)路徑或絕對(duì)路徑指定要導(dǎo)入的模塊文件。
返回被導(dǎo)出的模塊內(nèi)容。
2.導(dǎo)出模塊:
使用 module.exports 或 exports 對(duì)象導(dǎo)出模塊內(nèi)容。
可以導(dǎo)出變量、函數(shù)、對(duì)象或其他模塊。
module.exports 是導(dǎo)出整個(gè)模塊的內(nèi)容,而 exports 是 module.exports 的一個(gè)引用。
3.同步加載:
require 函數(shù)是同步的,會(huì)阻塞后續(xù)代碼的執(zhí)行直到模塊加載完畢。
適用于在服務(wù)器環(huán)境中加載本地模塊或在舊版瀏覽器環(huán)境中加載模塊。
4.動(dòng)態(tài)加載:
可以在運(yùn)行時(shí)根據(jù)需求動(dòng)態(tài)加載模塊。
5.塊級(jí)作用域:
CommonJS 模塊使用立即執(zhí)行函數(shù)表達(dá)式(IIFE)封裝,每個(gè)模塊都具有自己的作用域。
模塊內(nèi)定義的變量和方法默認(rèn)是私有的,不會(huì)暴露到全局作用域。
// 導(dǎo)出模塊內(nèi)容 module.exports = { variable1: value1, myFunction: function() { /* 函數(shù)體 */ } }; // 導(dǎo)入模塊 const myModule = require('./myModule'); // 使用導(dǎo)入的模塊內(nèi)容 console.log(myModule.variable1); myModule.myFunction(); 需要注意的是,在瀏覽器環(huán)境中,CommonJS 模塊需要使用打包工具(如 Browserify、Webpack)將其轉(zhuǎn)換為瀏覽器可識(shí)別的格式,或者使用庫(kù)(如 RequireJS)來(lái)加載和管理模塊。
三、具體使用
在 CommonJS 模塊系統(tǒng)中,module.exports 和 exports 是指向同一個(gè)對(duì)象的引用,但不能直接將 exports 賦值為新對(duì)象或值,因?yàn)樗皇?module.exports 的一個(gè)引用。如果想要導(dǎo)出一個(gè)新的對(duì)象或值,請(qǐng)使用 module.exports。
1.導(dǎo)出單個(gè)變量、函數(shù)或?qū)ο?/h3>
module.exports = myVariable;
//或者
exports.myVariable = myVariable;
module.exports = myVariable; //或者 exports.myVariable = myVariable;
2.導(dǎo)出多個(gè)變量、函數(shù)或?qū)ο?/h3>
module.exports = {
variable1: value1,
variable2: value2,
myFunction: function() { /* 函數(shù)體 */ }
};
//或者
exports.variable1 = value1;
exports.variable2 = value2;
exports.myFunction = function() { /* 函數(shù)體 */ };
module.exports = { variable1: value1, variable2: value2, myFunction: function() { /* 函數(shù)體 */ } }; //或者 exports.variable1 = value1; exports.variable2 = value2; exports.myFunction = function() { /* 函數(shù)體 */ };
3.通過(guò)賦值給 exports 對(duì)象導(dǎo)出:
module.exports = { variable1: value1, variable2: value2, myFunction: function() { /* 函數(shù)體 */ } }; //或者 exports.variable1 = value1; exports.variable2 = value2; exports.myFunction = function() { /* 函數(shù)體 */ };
4.導(dǎo)入
//在 CommonJS 中,使用 require 導(dǎo)入模塊時(shí),會(huì)返回被導(dǎo)出的內(nèi)容 const myModule = require('./myModule');
module.exports:用于導(dǎo)出整個(gè)模塊的內(nèi)容??梢酝ㄟ^(guò)賦值給 module.exports 導(dǎo)出一個(gè)對(duì)象、函數(shù)或值。導(dǎo)出的內(nèi)容可以被其他模塊通過(guò) require 導(dǎo)入。例如:module.exports = myVariable;
exports:是 module.exports 的一個(gè)引用,并且可以通過(guò)添加屬性和方法來(lái)導(dǎo)出多個(gè)值。當(dāng)使用 exports.variable = value 導(dǎo)出時(shí),實(shí)際上是在修改 module.exports 對(duì)象,將變量作為其屬性添加進(jìn)去。例如:exports.myFunction = function() { /* 函數(shù)體 */ };
需要注意的是,module.exports 和 exports 是同一份內(nèi)存空間的引用,因此直接給 exports 賦予一個(gè)新的對(duì)象或值并不會(huì)更改 module.exports 的引用。所以,如果要導(dǎo)出一個(gè)新的對(duì)象或值,應(yīng)該使用 module.exports。
到此這篇關(guān)于require導(dǎo)入module.exports 或 exports導(dǎo)出的使用的文章就介紹到這了,更多相關(guān)require導(dǎo)入module.exports內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS刷新當(dāng)前頁(yè)面的幾種方法總結(jié)
本篇文章主要是對(duì)JS刷新當(dāng)前頁(yè)面的幾種方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12淺析JSONP技術(shù)原理及實(shí)現(xiàn)
這篇文章主要介紹了淺析JSONP技術(shù)原理及實(shí)現(xiàn) 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06JS實(shí)現(xiàn)的倒計(jì)時(shí)效果實(shí)例(2則實(shí)例)
這篇文章主要介紹了JS實(shí)現(xiàn)的倒計(jì)時(shí)效果,列舉了兩則JavaScript倒計(jì)時(shí)效果代碼供大家參考,原理基本相似,代碼簡(jiǎn)潔實(shí)用,需要的朋友可以參考下2015-12-12js仿QQ中對(duì)聯(lián)系人向左滑動(dòng)、滑出刪除按鈕的操作
這篇文章主要介紹了js仿QQ中對(duì)聯(lián)系人向左滑動(dòng)、滑出刪除按鈕的操作,即編寫(xiě)一個(gè)js向左滑動(dòng)刪除 交互特效的插件,感興趣的小伙伴們可以參考一下2016-04-04js中class的點(diǎn)擊事件沒(méi)有效果的解決方法
下面小編就為大家?guī)?lái)一篇js中class的點(diǎn)擊事件沒(méi)有效果的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10JavaScript中的property和attribute介紹
JavaScript中的property和attribute介紹,需要的朋友可以參考下。2011-12-12JavaScript實(shí)現(xiàn)大文件分片上傳處理
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)大文件分片上傳處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08