module.exports 和 exports,export 和export default的區別


1、module.exports 

module變量代表當前模塊。這個變量是一個對象,module對象會創建一個叫exports的屬性,這個屬性的默認值是一個空的對象:

module.exports = {};

例子:app.js

module.exports.Name="我是電腦";
module.exports.Say=function(){
  console.log("我可以干任何事情");  
}


//上邊這段代碼就相當於一個對象

{
  "Name":" 我是電腦",
  "Say"    :function(){
           console.log("我可以干任何事情");  
        }
}

require方法用於加載模塊。

var req=require("./app.js");

req.Name      //這個值是 "我是電腦"
req.Say()      //這個是直接調用Say方法,打印出來 "我可以干任何事情"

2、exports 與 module.exports的關系

Node為每個模塊提供一個exports變量,指向module.exports。可以通俗的理解為:

var exports = module.exports;

//兩個是相等的關系,但又不是絕對相當的關系
例如:
1.module.exports可以直接導出一個匿名函數或者一個值
module.exports=function(){
  var a="Hello World"  
  return   a;
}
但是exports是不可以的,因為這樣等於切斷了exports與module.exports的聯系。
exports=function(){           //這樣寫法是錯誤的
  var a="Hello World"        //這樣寫法是錯誤的
  return   a;                //這樣寫法是錯誤的
}                            //這樣寫法是錯誤的

3、export和export default的區別

export是es6引出的語法,用於導出模塊中的變量,對象,函數,類。對應的導入關鍵字是import。

二者的區別有以下幾點:

  • export default在一個模塊中只能有一個,當然也可以沒有。export在一個模塊中可以有多個。
  • export default的對象、變量、函數、類,可以沒有名字。export的必須有名字。
  • export default對應的import和export有所區別
1.export寫法
//./aap.js
var name="我是電腦"var say=function(){ console.log("我可以干很多事"); }
export {name,say};

//也可以直接一個一個的export但是必須得有名字
export const a=1;
export function data(){
  return data;
}


//其他頁面引入時必須這樣
import {name,say} from "./app.js"

2.export default
//app.js
//可以沒有函數名字
export default function(){
  return data;
}
//這里export不能這樣導出
export default const a=12;
//應該這樣導出
const a=12;
export default a
 
 

//其他頁面引入時必須這樣
import data from "./app.js"
 
總結:可以看到用export defaultimport語句不需要使用大括號;用export,對應的import語句需要使用大括號,一個模塊只能有一個默認輸出,所以export default只能使用一次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM