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

一、module.exports javascript

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

module.exports = {};

例子:app.jses6

module.exports.Name="我是電腦";
module.exports.Say=function(){
  console.log("我能夠幹任何事情");  
}


//上邊這段代碼就至關於一個對象

{
  "Name":" 我是電腦",
  "Say"    :function(){
           console.log("我能夠幹任何事情");  
        }
}

require方法用於加載模塊。app

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

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

二、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;                //這樣寫法是錯誤的
}                            //這樣寫法是錯誤的

三、export和export default的區別ui

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

兩者的區別有如下幾點:code

  • 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 defaultimportexportimportexport default
相關文章
相關標籤/搜索