Node.JS中的模塊、exports和module講解
模塊
分為兩大類
核心模塊
- 由node引擎提供的模塊
- 核心模塊的標識就是模塊的名字
var fs=require("fs");
文件模塊
由用戶自己創(chuàng)建的模塊文件模塊的標識就是文件的路徑(絕對路徑、相對路徑),相對路徑用的更多,相對路徑使用.或者…開頭
在node中有一個全局對象global,它的作用和網(wǎng)頁中window類似,在全局中創(chuàng)建的變量都會作為global的屬性保存,在全局中創(chuàng)建的函數(shù)會作為global的方法保存
arguements表示函數(shù)的變量
arguements.callee這個屬性保存的是當前執(zhí)行的函數(shù)對象
如果在arguments.callee后面+“”,代表拼串,會把函數(shù)打印出來
console.log(arguments.callee+"");
當node在執(zhí)行模塊中的代碼時,它會首先在代碼的最頂部,添加如下代碼
function (exports, require, module, __filename, __dirname) {
在代碼的最底部,添加如下代碼
}
實際上模塊中的代碼都是包裝在一個函數(shù)中執(zhí)行的,并且在函數(shù)執(zhí)行時,同時傳遞進了5個實參
exports:該對象將變量或函數(shù)暴露到外部
require:函數(shù),用來引入外部的模塊
module:代表當前模塊本身,exports就是module的屬性,既可以使用exports到處,也可以使用module.exports導(dǎo)出
console.log(exports); console.log(module.exports); console.log(module.exports==exports);
_filename:當前模塊的完整路徑
console.log(__filename);
_dirname:當前模塊所在文件夾的完整路徑
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)存中進行分析,在存入變量和值后,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);
當出現(xiàn)new時,就需要往堆內(nèi)存中存放對象,棧內(nèi)存中存放變量,對象沒有名字,只有內(nèi)存地址(16進制地址),變量的值就是地址值,此時會有指針指向堆內(nèi)存中的對象
此時加入obj.name時,會加到堆內(nèi)存中的對象
當對obj2設(shè)置為null,對 obj 沒有影響
因為obj2改變的是變量,obj2.name改變的是對象
exports和module.exports的關(guān)系
此時再轉(zhuǎn)回到module.exports和exports
module.exports改變的是對象,exports改變的是變量的值,此時運行就會報錯
通過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)文章
nodejs入門教程五:連接數(shù)據(jù)庫的方法分析
這篇文章主要介紹了nodejs入門教程之連接數(shù)據(jù)庫的方法,結(jié)合實例形式分析了nodejs連接數(shù)據(jù)庫的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-04-04node將對象轉(zhuǎn)化為query的實現(xiàn)方法
本文主要介紹了node將對象轉(zhuǎn)化為query的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié)
本文主要介紹了Nest.js中使用HTTP五種數(shù)據(jù)傳輸方式小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05詳解Express筆記之動態(tài)渲染HTML(新手入坑)
這篇文章主要介紹了詳解Express筆記之動態(tài)渲染HTML(新手入坑),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12