require導入module.exports 或 exports導出的使用方法
一、CommonJS 的導入和導出
1.定義
CommonJS 是一種用于 JavaScript 的模塊化規(guī)范,用于在服務端環(huán)境和舊版瀏覽器中組織和管理代碼。它定義了模塊的導入(require)和導出(module.exports 或 exports)方式,并支持同步加載模塊。
2.特點和使用方法
1.導入模塊:
使用 require 函數(shù)來導入模塊。
可以通過相對路徑或絕對路徑指定要導入的模塊文件。
返回被導出的模塊內(nèi)容。
2.導出模塊:
使用 module.exports 或 exports 對象導出模塊內(nèi)容。
可以導出變量、函數(shù)、對象或其他模塊。
module.exports 是導出整個模塊的內(nèi)容,而 exports 是 module.exports 的一個引用。
3.同步加載:
require 函數(shù)是同步的,會阻塞后續(xù)代碼的執(zhí)行直到模塊加載完畢。
適用于在服務器環(huán)境中加載本地模塊或在舊版瀏覽器環(huán)境中加載模塊。
4.動態(tài)加載:
可以在運行時根據(jù)需求動態(tài)加載模塊。
5.塊級作用域:
CommonJS 模塊使用立即執(zhí)行函數(shù)表達式(IIFE)封裝,每個模塊都具有自己的作用域。
模塊內(nèi)定義的變量和方法默認是私有的,不會暴露到全局作用域。
// 導出模塊內(nèi)容 module.exports = { variable1: value1, myFunction: function() { /* 函數(shù)體 */ } }; // 導入模塊 const myModule = require('./myModule'); // 使用導入的模塊內(nèi)容 console.log(myModule.variable1); myModule.myFunction(); 需要注意的是,在瀏覽器環(huán)境中,CommonJS 模塊需要使用打包工具(如 Browserify、Webpack)將其轉換為瀏覽器可識別的格式,或者使用庫(如 RequireJS)來加載和管理模塊。
三、具體使用
在 CommonJS 模塊系統(tǒng)中,module.exports 和 exports 是指向同一個對象的引用,但不能直接將 exports 賦值為新對象或值,因為它只是 module.exports 的一個引用。如果想要導出一個新的對象或值,請使用 module.exports。
1.導出單個變量、函數(shù)或對象
module.exports = myVariable; //或者 exports.myVariable = myVariable;
2.導出多個變量、函數(shù)或對象
module.exports = { variable1: value1, variable2: value2, myFunction: function() { /* 函數(shù)體 */ } }; //或者 exports.variable1 = value1; exports.variable2 = value2; exports.myFunction = function() { /* 函數(shù)體 */ };
3.通過賦值給 exports 對象導出:
module.exports = { variable1: value1, variable2: value2, myFunction: function() { /* 函數(shù)體 */ } }; //或者 exports.variable1 = value1; exports.variable2 = value2; exports.myFunction = function() { /* 函數(shù)體 */ };
4.導入
//在 CommonJS 中,使用 require 導入模塊時,會返回被導出的內(nèi)容 const myModule = require('./myModule');
module.exports:用于導出整個模塊的內(nèi)容??梢酝ㄟ^賦值給 module.exports 導出一個對象、函數(shù)或值。導出的內(nèi)容可以被其他模塊通過 require 導入。例如:module.exports = myVariable;
exports:是 module.exports 的一個引用,并且可以通過添加屬性和方法來導出多個值。當使用 exports.variable = value 導出時,實際上是在修改 module.exports 對象,將變量作為其屬性添加進去。例如:exports.myFunction = function() { /* 函數(shù)體 */ };
需要注意的是,module.exports 和 exports 是同一份內(nèi)存空間的引用,因此直接給 exports 賦予一個新的對象或值并不會更改 module.exports 的引用。所以,如果要導出一個新的對象或值,應該使用 module.exports。
到此這篇關于require導入module.exports 或 exports導出的使用的文章就介紹到這了,更多相關require導入module.exports內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
js仿QQ中對聯(lián)系人向左滑動、滑出刪除按鈕的操作
這篇文章主要介紹了js仿QQ中對聯(lián)系人向左滑動、滑出刪除按鈕的操作,即編寫一個js向左滑動刪除 交互特效的插件,感興趣的小伙伴們可以參考一下2016-04-04JavaScript中的property和attribute介紹
JavaScript中的property和attribute介紹,需要的朋友可以參考下。2011-12-12