nodejs中exports與module.exports的區別詳細介紹
(轉自網際網路 版權歸原作者)
你肯定非常熟悉nodejs模組中的exports物件,你可以用它建立你的模組。例如:(假設這是rocker.js檔案)
exports.name = function() {
console.log('My name is Lemmy Kilmister');
};
在另一個檔案中你這樣引用
var rocker = require('./rocker.js');
rocker.name(); // 'My name is Lemmy Kilmister'
那到底Module.exports是什麼呢?它是否合法呢?
其實,Module.exports才是真正的介面,exports只不過是它的一個輔助工具。 最終返回給呼叫的是Module.exports而不是exports。
所有的exports收集到的屬性和方法,都賦值給了Module.exports。當然,這有個前提,就是Module.exports本身不具備任何屬性和方法。如果,Module.exports已經具備一些屬性和方法,那麼exports收集來的資訊將被忽略。
修改rocker.js如下:
複製程式碼程式碼如下:
module.exports = 'ROCK IT!';
exports.name = function() {
console.log('My name is Lemmy Kilmister');
};
再次引用執行rocker.js
複製程式碼程式碼如下:
var rocker = require('./rocker.js');
rocker.name(); // TypeError: Object ROCK IT! has no method 'name'
發現報錯:物件“ROCK IT!”沒有name方法
rocker模組忽略了exports收集的name方法,返回了一個字串“ROCK IT!”。由此可知,你的模組並不一定非得返回“例項化物件”。你的模組可以是任何合法的javascript物件--boolean, number, date, JSON, string, function, array等等。
你的模組可以是任何你設定給它的東西。如果你沒有顯式的給Module.exports設定任何屬性和方法,那麼你的模組就是exports設定給Module.exports的屬性。
下面例子中,你的模組是一個類:
複製程式碼程式碼如下:
module.exports = function(name, age) {
this.name = name;
this.age = age;
this.about = function() {
console.log(this.name +' is '+ this.age +' years old');
};
};
可以這樣應用它:
複製程式碼程式碼如下:
var Rocker = require('./rocker.js');
var r = new Rocker('Ozzy', 62);
r.about(); // Ozzy is 62 years old
下面例子中,你的模組是一個數組:
複製程式碼程式碼如下:
module.exports = ['Lemmy Kilmister', 'Ozzy Osbourne', 'Ronnie James Dio', 'Steven Tyler', 'Mick Jagger'];
可以這樣應用它:
複製程式碼程式碼如下:
var rocker = require('./rocker.js');
console.log('Rockin in heaven: ' + rocker[2]); //Rockin in heaven: Ronnie James Dio
現在你明白了,如果你想你的模組是一個特定的型別就用Module.exports。如果你想的模組是一個典型的“例項化物件”就用exports。
給Module.exports新增屬性類似於給exports新增屬性。例如:
複製程式碼程式碼如下:
module.exports.name = function() {
console.log('My name is Lemmy Kilmister');
};
同樣,exports是這樣的
複製程式碼程式碼如下:
exports.name = function() {
console.log('My name is Lemmy Kilmister');
};
請注意,這兩種結果並不想同。前面已經提到module.exports是真正的介面,exports只不過是它的輔助工具。推薦使用exports匯出,除非你打算從原來的“例項化物件”改變成一個型別。
相關推薦
nodejs中exports與module.exports的區別詳細介紹
(轉自網際網路 版權歸原作者) 你肯定非常熟悉nodejs模組中的exports物件,你可以用它建立你的模組。例如:(假設這是rocker.js檔案) 程式碼如下: exports.name = function() { console.log('My name
nodejs中exports與module.exports的區別
ons src uri 技術分享 20px boolean 微軟雅黑 是否 不一定 [原文] 你肯定非常熟悉nodejs模塊中的exports對象,你可以用它創建你的模塊。例如:(假設這是rocker.js文件)exports.name = function() {
Node.js中exports與module.exports的區別
個數 error: years 信息 輸出 一個數 mil 導出 原來 一、exports使用 test.js exports.name = function() { console.log(‘張三‘); }; index.js使用 var test= req
node.js中exports與module.exports的區別分析
前言 關於Node.js中的exports和module.exports,很多時候都比較容易讓人混淆,弄不清楚兩者間的區別。那麼我們就從頭開始理清這兩者之間的關係。 來源 在開發Node.js應用的時候,很多模組都是需要引入才能使用,但是為什麼exports和module.exports我們沒有引用卻可
exports與module.exports的區別
構造方法 什麽 erro 學習 自己的 我只 屬性和方法 現在 內置 nodejs有自己的模塊系統,分為文件模塊和內置模塊。webpack是運行在node環境中,在學習vue-cli的webpack配置的時候, 發現有的文件模塊: exports.fun1=function
exports與module.exports的區別,export與export.defult區別
使用 es6 webpack 前端工程 關系 import 接口 的區別 通過 在JS模塊化編程中,之前使用的是require.js或者sea.js。隨著前端工程化工具webpack的推出,使得前端js可以使用CommonJS模塊標準或者使用ES6 moduel特性。 在C
Node中exports與module.export的使用與區別
module.exports與exports的介紹module.exports與exports都是將函式或者是方法暴露出去,require的時候進行呼叫,但是2者是有區別的。以下是程式碼://ex.js exports='danhuangmode'; //mex.js module.exports='
Node.js中exports 和 module.exports 的區別
- exports 和 module.exports 的區別 + 每個模組中都有一個 module 物件 + module 物件中有一個 exports 物件 + 我們可以把需要匯出的成員都掛載到 module.exports 介面物件中 + 也就是:`mou
Node中exports和module.exports的區別
module.exports屬性 Node內部提供一個Module構建函式。所有模組都是Module的例項。每個模組內部,都有一個module物件,代表當前模組。它有以下屬性。 module.id 模組的識別符,通常是帶有絕對路徑的模組檔名。 module.filename
簡單說明 exports 與module.export的區別
exports:首先對於本身來講是一個變數(物件),它不是module的引用,它是{}的引用,它指向module.exports的{}模組module.exports:首先,module是一個變數,指向一塊記憶體,exports是module中的一個屬性,儲存在記憶體中,然後
Node.js中exports,module.exports以及require方法
bubuko lan ref isp 沒有 right target img .html 在Node.js中,使用module.exports.f = ...與使用exports.f = ...是一樣的,此時exports就是module.exports的一種簡寫方式。但是
exports、module.exports和export、export default區別
在 Node 環境中,一個.js檔案就稱之為一個模組(module),每個檔案就是一個模組,有自己的作用域,在一個檔案裡面定義的變數、函式、類,都是私有的,對其他檔案不可見,而 Node 應用由模組組成,採用 CommonJS 模組規範
node.js exports和module.exports的區別
要首先了解值型別以及引用型別 (1)值型別:字串(字串),數值(數),布林值(布林值),無,未定義 (2)引用型別:物件(物件),陣列(陣列),函式(功能) 值型別資料儲存在棧上,而引用型別資料儲存在堆上(此圖只為解釋堆疊,與下文的程式碼中變數無關係) 值型別:
Nodejs的exports和module.exports
1>exports 其實是 module.exports 的一個引用 2>require()返回的是 module.exports 而不是 exports 所以,若我們使用 exp
js學習記錄之(一)require 與module.exports
1. js 裡面的程式碼可以放在不同的檔案裡,稱為程式碼模組2.當一個模組需要引用其他模組中程式碼的時候,就用require匯入相應的模組(使用程式碼塊),用module.exports指向一個程式碼塊(製作程式碼塊)3. 檔案1.js var codeUtils =
Node.js裡exports和module.exports的區別
很早之前我就對exports和module.exports之間的區別產生了好奇,因為用起來感覺不出什麼區別但卻又是不同的用法。實際上,exports是module.exports的引用。 換句話說,模組最終返回的是module.exports給呼叫者而不是exports。 用圖舉例說
exports和module.exports的區別
UNC mod exp 兩個 指向 異同 module node 技術分享 首先得明確兩個的含義 exports:首先對於本身來講是一個變量(對象),它不是module的引用,它是{}的引用,它指向module.exports的{}模塊 module.exports:首
【MM ECC VS S4】MM模塊中ECC與S4的區別
ships sap request down rac erro load 能力 業務 原文出自 https://blogs.sap.com/2017/04/28/comparison-of-simplification-and-functionality-in-s4-and
C#中Struct與Class的區別
而是 適用於 ack 定義 cts 多態 支持 關鍵字 for class和struct最本質的區別是class是引用類型,而struct是值類型,它們在內存中的分配情況有所區別。 什麽是class? class(類)是面向對象編程的基本概念,是一種自定義數據結構類型,通
left join中where與on的區別
where left 查詢 left join spa isa strong 通過 統計 舉例進行說明,我們現在有兩個表,即商品表(products)與sales_detail(銷售記錄表)。我們主要是通過這兩個表來對MySQL關聯left join 條件on與wh