Node.JS中的模塊、exports和module講解
模塊
分為兩大類
核心模塊
- 由node引擎提供的模塊
- 核心模塊的標(biāo)識就是模塊的名字
var fs=require("fs");
文件模塊
由用戶自己創(chuàng)建的模塊文件模塊的標(biāo)識就是文件的路徑(絕對路徑、相對路徑),相對路徑用的更多,相對路徑使用.或者…開頭
在node中有一個全局對象global,它的作用和網(wǎng)頁中window類似,在全局中創(chuàng)建的變量都會作為global的屬性保存,在全局中創(chuàng)建的函數(shù)會作為global的方法保存
arguements表示函數(shù)的變量
arguements.callee這個屬性保存的是當(dāng)前執(zhí)行的函數(shù)對象

如果在arguments.callee后面+“”,代表拼串,會把函數(shù)打印出來
console.log(arguments.callee+"");

當(dāng)node在執(zhí)行模塊中的代碼時,它會首先在代碼的最頂部,添加如下代碼
function (exports, require, module, __filename, __dirname) {在代碼的最底部,添加如下代碼
}
實際上模塊中的代碼都是包裝在一個函數(shù)中執(zhí)行的,并且在函數(shù)執(zhí)行時,同時傳遞進(jìn)了5個實參
exports:該對象將變量或函數(shù)暴露到外部
require:函數(shù),用來引入外部的模塊
module:代表當(dāng)前模塊本身,exports就是module的屬性,既可以使用exports到處,也可以使用module.exports導(dǎo)出
console.log(exports); console.log(module.exports); console.log(module.exports==exports);

_filename:當(dāng)前模塊的完整路徑
console.log(__filename);

_dirname:當(dāng)前模塊所在文件夾的完整路徑
console.log(__dirname);

helloModule.js
module.exports={
name:'豬八戒',
age:28,
sayName:function(){
console.log("我是豬八戒");
}
}05.module.js
var hello=require("./helloModule");
console.log(hello.name);
console.log(hello.age);
console.log(hello.sayName);
基本數(shù)據(jù)類型
var a=10;
var b=a;
a++;
console.log("a="+a);
console.log("b="+b);
基本數(shù)據(jù)類型的值是相互獨立的,所以a++后,b不發(fā)生改變
可以從堆棧內(nèi)存中進(jìn)行分析,在存入變量和值后,a的值10和b的值是獨立的,此時a的值變化不影響b的值

引用數(shù)據(jù)類型
此時再看到引用變量
var obj=new Object();
obj.name="孫悟空";
var obj2=obj;
obj2.name="豬八戒";
console.log("obj="+obj.name);
console.log("obj2="+obj2.name);
當(dāng)出現(xiàn)new時,就需要往堆內(nèi)存中存放對象,棧內(nèi)存中存放變量,對象沒有名字,只有內(nèi)存地址(16進(jìn)制地址),變量的值就是地址值,此時會有指針指向堆內(nèi)存中的對象
此時加入obj.name時,會加到堆內(nèi)存中的對象

當(dāng)對obj2設(shè)置為null,對 obj 沒有影響
因為obj2改變的是變量,obj2.name改變的是對象

exports和module.exports的關(guān)系
此時再轉(zhuǎn)回到module.exports和exports

module.exports改變的是對象,exports改變的是變量的值,此時運(yùn)行就會報錯

通過exports只能使用.的方式來向外暴露內(nèi)部變量
exports.xxx=xx;
而module.exports既可以通過.的形式,也可以直接賦值
module.exports.xxx=xx;
//或者
module.exports={...}通過exports只能使用.的方式來向外暴露內(nèi)部變量
exports.xxx=xx;
而module.exports既可以通過.的形式,也可以直接賦值
module.exports.xxx=xx;
//或者
module.exports={...}到此這篇關(guān)于Node.JS中的模塊、exports和module講解的文章就介紹到這了,更多相關(guān)node.js模塊、exports和module內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從零學(xué)習(xí)node.js之express入門(六)
相信大家都知道Express是一個簡潔而靈活的 node.js Web應(yīng)用框架, 提供了一系列強(qiáng)大特性幫助你創(chuàng)建各種 Web 應(yīng)用,和豐富的 HTTP 工具。下面這篇文章主要介紹了node.js中express的入門知識,需要的朋友可以參考下。2017-02-02
nodejs 圖解express+supervisor+ejs的用法(推薦)
下面小編就為大家?guī)硪黄猲odejs 圖解express+supervisor+ejs的用法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
在Ubuntu系統(tǒng)上安裝Ghost博客平臺的教程
這篇文章主要介紹了在Ubuntu系統(tǒng)上安裝Ghost博客平臺的教程,Ghost博客平臺以Node.js寫成,需要的朋友可以參考下2015-06-06
通過node-mysql搭建Windows+Node.js+MySQL環(huán)境的教程
這篇文章主要介紹了通過node-mysql搭建Windows+Node.js+MySQL環(huán)境的教程,node-mysql是JavaScript編寫的一個Node的MySQL驅(qū)動,需要的朋友可以參考下2016-03-03
NVM管理Node.js實現(xiàn)不同版本Angular環(huán)境切換
Node Version Manager(NVM)是一個用于管理多個Node.js版本的工具,它允許用戶在同一臺機(jī)器上安裝和使用多個Node.js版本,本文將給大家介紹NVM管理Node.js實現(xiàn)不同版本Angular環(huán)境切換的流程步驟,需要的朋友可以參考下2024-05-05
Node發(fā)出HTTP POST請求的方法實例小結(jié)
這篇文章主要介紹了Node發(fā)出HTTP POST請求的方法,結(jié)合實例形式總結(jié)分析了三種常用的post請求操作方法,以及相關(guān)庫操作注意事項,需要的朋友可以參考下2023-05-05
Node+Express搭建HTTPS服務(wù)的實現(xiàn)
最近開發(fā)需要搭建一個https的服務(wù),正好最近在用nodejs和express,本文章主要介紹了Node+Express搭建HTTPS服務(wù)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-12-12
node.js解決客戶端請求數(shù)據(jù)里面中文亂碼的事件方法
本文主要介紹了node.js解決客戶端請求數(shù)據(jù)里面中文亂碼的事件方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

