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

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

當(dāng)node在執(zhí)行模塊中的代碼時(shí),它會(huì)首先在代碼的最頂部,添加如下代碼
function (exports, require, module, __filename, __dirname) {在代碼的最底部,添加如下代碼
}
實(shí)際上模塊中的代碼都是包裝在一個(gè)函數(shù)中執(zhí)行的,并且在函數(shù)執(zhí)行時(shí),同時(shí)傳遞進(jìn)了5個(gè)實(shí)參
exports:該對(duì)象將變量或函數(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ù)類型的值是相互獨(dú)立的,所以a++后,b不發(fā)生改變
可以從堆棧內(nèi)存中進(jìn)行分析,在存入變量和值后,a的值10和b的值是獨(dú)立的,此時(shí)a的值變化不影響b的值

引用數(shù)據(jù)類型
此時(shí)再看到引用變量
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時(shí),就需要往堆內(nèi)存中存放對(duì)象,棧內(nèi)存中存放變量,對(duì)象沒有名字,只有內(nèi)存地址(16進(jìn)制地址),變量的值就是地址值,此時(shí)會(huì)有指針指向堆內(nèi)存中的對(duì)象
此時(shí)加入obj.name時(shí),會(huì)加到堆內(nèi)存中的對(duì)象

當(dāng)對(duì)obj2設(shè)置為null,對(duì) obj 沒有影響
因?yàn)閛bj2改變的是變量,obj2.name改變的是對(duì)象

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

module.exports改變的是對(duì)象,exports改變的是變量的值,此時(shí)運(yùn)行就會(huì)報(bào)錯(cuò)

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

