require() ,module.exports ,exports,import, import(),export, export default的使用

簡介
本文為自己對require() 彼绷,module.exports巍佑, exports,import寄悯, import()萤衰,export, export default的使用及區(qū)別的總結猜旬。

1. module.exports 與exports與require()

(1)module.exports的使用

module.exports 導出的接口(可以是函數/對象/數組/字符串)

實例1 導出一個函數

var a=function(){ 
    console.log('我是a--賦值函數')
}
module.exports = a

實例2 導出一個數組

var arr=[1,2,3]
module.exports = arr

實例3 導出一個對象

var a=function(){
     console.log('我是a--賦值函數')
}

function b(){ 
    console.log('我是b函數')
}

var str='helle world'

var arr=[1,2,3]

module.exports = {a,b,str,arr}

(2)module.exports.屬性 或 exports.屬性 的使用
module.exports.屬性===exports.屬性脆栋,兩種寫法都是一樣的倦卖,這樣導出的模塊是一個實例化對象。

但是注意4徽E绿拧!
前提是該模塊中沒有使用 module.exports +導出模塊這種方式秦踪。即地(1)中描述的那種方式嘉竟。如果同時使用第(1)和第(2)中方式,則第二中方式導出的將會無效洋侨。

module.exports = {a,b,str,arr}
 exports.name=function(){}
 exports.age=function(){}
image.png

所以只能選擇其中一種方式進行導出舍扰。

(3)require的使用
語法1

require( [路徑],callback)

第一個參數:在數組里面寫路徑希坚。
第二個參數:回調函數边苹。第一個參數返回的接口將作為回調函數的參數。
例子

導入部分代碼
require( ['./func1.js'] , function(a){console.log(a)} )

打印結果為


1.png
接口部分的代碼
var a=function(){ console.log('我是a--賦值函數')}
function b(){ console.log('我是b函數')}
var str='helle world'
var arr=[1,2,3]
module.exports = {a,b,str,arr}

語法2

require( './name.js')

如果不需要回調函數可直接這樣寫裁僧,也可先賦給一個變量个束。

var m=require( './name.js')
m.data()

注意注意!A钠!茬底!
如果是通過第(1)中方式導出的,導出什么require的就是什么获洲,如果是第(2)種方式阱表,則是一個實例化對象。
第一種方式

function b(){ console.log('我是b函數')}
module.exports=b
require( './func1.js')()
image.png

第二種方式

function b(){ console.log('我是b函數')}
module.exports.func=b
var requiretest=require( './func1.js')
console.log(requiretest)
requiretest.func() //requiretest是一個對象贡珊,屬性func,值為函數
1.png

2. import 與import(),export與export default
(1)import 與import()一樣最爬,只是import()動態(tài)加載,加載完返回一個promise對象门岔,并將返回的接口作為then中回調函數的參數爱致。

import()
.then( module=>{console.log(module)} )
.catch( err=>{console.log(err.message)} )

import('./fun.js').then(function(a){console.log(a)})

例子

導入模塊
console.log(import('./fun.js'))
import('./fun.js').then(function(a){console.log(a)})

----------------------------------------------------------------------
接口模塊
export var hello=function(){
    alert('hello');
}
export var say=function(){
    alert('i love you');
}
export var haha=function(){
    alert('haha');
}
export default  haha=function(){
    alert('haha');
}
export var str='dddd'
1.png
2.png

注意點

import()加載模塊成功以后,這個模塊會作為一個對象寒随,當作then方法的參數糠悯。因此,可以使用對象解構賦值的語法妻往,獲取輸出接口互艾。

(2)export與export default
export導出方式1

export var hello=function(){
    alert('hello');
}
export var say=function(){
    alert('i love you');
}
export default  haha=function(){
    alert('haha');
}
export var str='dddd'

export導出方式2

var hello=function(){
    alert('hello');
 }
 var say=function(){
    alert('i love u');
 }
 var str='hahahah';
 var defaul={'name':'xm',age:1}
 var arr=[1,2,3]
 export {hello,str,defaul,arr}

注意:
1. export default相當于export { a as default} 即
export default {hello,str,defaul,arr}相當于
export { {hello,str,defaul,arr} as default }

var hello=function(){
    alert('hello');
 }
 var say=function(){
    alert('i love u');
 }
 var str='hahahah';
 var defaul={'name':'xm',age:1}
 var arr=[1,2,3]
//  export {hello,str,defaul,arr}
export default {hello,str,defaul,arr}//相當于export {a as default}

1.png

2. export和export default接收方式不同, export defrault導出的可以用任意變量接受蒲讯,
export必須名字對應忘朝,即對象結構的方式接受。
import xx ,{hello,str,defaul,arr} from './aa';
import靜態(tài)導入參考
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import)

以上為總結的全部內容判帮,參考如下
http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html
https://blog.csdn.net/ixygj197875/article/details/79263912
https://blog.csdn.net/qq_28702545/article/details/54892562
https://www.cnblogs.com/libin-1/p/7127481.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末局嘁,一起剝皮案震驚了整個濱河市溉箕,隨后出現的幾起案子,更是在濱河造成了極大的恐慌悦昵,老刑警劉巖肴茄,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異但指,居然都是意外死亡寡痰,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門棋凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拦坠,“玉大人,你說我怎么就攤上這事剩岳≌瓯酰” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵拍棕,是天一觀的道長晓铆。 經常有香客問我,道長绰播,這世上最難降的妖魔是什么骄噪? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蠢箩,結果婚禮上链蕊,老公的妹妹穿的比我還像新娘。我一直安慰自己忙芒,他們只是感情好示弓,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布讳侨。 她就那樣靜靜地躺著呵萨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跨跨。 梳的紋絲不亂的頭發(fā)上潮峦,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音勇婴,去河邊找鬼忱嘹。 笑死,一個胖子當著我的面吹牛耕渴,可吹牛的內容都是我干的拘悦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼橱脸,長吁一口氣:“原來是場噩夢啊……” “哼础米!你這毒婦竟也來了分苇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤屁桑,失蹤者是張志新(化名)和其女友劉穎医寿,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體蘑斧,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡靖秩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了竖瘾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟突。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捕传,靈堂內的尸體忽然破棺而出事扭,到底是詐尸還是另有隱情,我是刑警寧澤乐横,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布求橄,位于F島的核電站,受9級特大地震影響葡公,放射性物質發(fā)生泄漏罐农。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一催什、第九天 我趴在偏房一處隱蔽的房頂上張望涵亏。 院中可真熱鬧,春花似錦蒲凶、人聲如沸气筋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宠默。三九已至,卻和暖如春灵巧,著一層夾襖步出監(jiān)牢的瞬間搀矫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工刻肄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓤球,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓敏弃,卻偏偏與公主長得像卦羡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容