摘要:模塊的文件名,帶有絕對(duì)路徑。返回一個(gè)布爾值,表示模塊是否已經(jīng)完成加載。返回一個(gè)對(duì)象,表示調(diào)用該模塊的模塊。表示模塊對(duì)外輸出的值。
我們?cè)诰帉慾s過(guò)程中,經(jīng)常會(huì)碰到 requrie和import的寫法,也會(huì)看到export default,exports的寫法,他們能不能混用呢,我們來(lái)探究一下
當(dāng)前環(huán)境:node版本 v9.6.1module
操作系統(tǒng) Mac
我們打印出module,結(jié)果如下
module.id 模塊的識(shí)別符,通常是帶有絕對(duì)路徑的模塊文件名。exports與module.exports
module.filename 模塊的文件名,帶有絕對(duì)路徑。
module.loaded 返回一個(gè)布爾值,表示模塊是否已經(jīng)完成加載。
module.parent 返回一個(gè)對(duì)象,表示調(diào)用該模塊的模塊。
module.children 返回一個(gè)數(shù)組,表示該模塊要用到的其他模塊。
module.exports 表示模塊對(duì)外輸出的值。
我們可以看到在模塊中exports和module.exports 是同一個(gè)對(duì)象
就相當(dāng)于,文件執(zhí)行前默認(rèn)執(zhí)行了一下語(yǔ)句
let exports = module.exports;export
var firstName = "Michael"; var lastName = "Jackson"; var year = 1958; export {firstName, lastName, year};
執(zhí)行結(jié)果
我們看到在node v9.6.1 版本中并不支持export,我們使用bable轉(zhuǎn)譯后看一下
其實(shí)使用export,編譯后還是使用的exports
var firstName = "Michael"; var lastName = "Jackson"; export default firstName; export {lastName };關(guān)于node中模塊導(dǎo)出結(jié)論
所以node中導(dǎo)出模塊只會(huì)用到了module.exports,其他語(yǔ)法都只是一些包裝而已
require 當(dāng)modle.js為exports的形式時(shí)module.js
var firstName = "Michael"; var lastName = "Jackson"; exports.default = firstName; exports.lastName = lastName;
index.js
const test4 = require("./modle"); console.log(test4);
結(jié)果
{ default: "Michael", lastName: "Jackson" }當(dāng)modle.js為export的形式時(shí)
module.js
var firstName = "Michael"; var lastName = "Jackson"; export default firstName; export lastName = lastName;
index.js
const test4 = require("./modle"); console.log(test4);
結(jié)果:
{ default: "Michael", lastName: "Jackson" }結(jié)論
require接受到的是module.exports對(duì)象
當(dāng)你使用export default firstName時(shí),轉(zhuǎn)化成了exports.default = firstName;
所以無(wú)論你使用什么樣的形式導(dǎo)出模塊,對(duì)于require來(lái)說(shuō)都是一樣的
var firstName = "Michael"; var lastName = "Jackson"; export default firstName; export { lastName };
index.js
import test6 from "./module"; console.log(test6);
結(jié)果
Michael
這里就和require不一樣了,import默認(rèn)導(dǎo)出的是 export default
index.js
import * as test6 from "./module"; console.log(test6);
結(jié)果:
{ default: "Michael", lastName: "Jackson" }
這時(shí)候?qū)С龅慕Y(jié)果才和require一致
當(dāng)import test6 from "./module"是,默認(rèn)會(huì)查找default,假如沒(méi)有export default那么 test6為undefined,那么要導(dǎo)出lastName就得使用
import { lastName } from "./module";當(dāng)modle.js為exports的形式時(shí)
var lastName = "Jackson"; var firstName = "Michael"; exports = { lastName , firstName };
index.js
import test7 from "./module"; console.log(test7);
結(jié)果
{ firstName: "Michael", lastName: "Jackson" }結(jié)論
導(dǎo)出模塊可以使用 export和exports,引入模塊可以使用 import和require,但兩兩可以交叉使用,
import/export 最終都是編譯為 require/exports 來(lái)執(zhí)行的
只是export 會(huì)有一個(gè)default的不同,但一般來(lái)說(shuō)export對(duì)應(yīng)import,exports對(duì)應(yīng)require。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94137.html
摘要:要想讓模塊再次運(yùn)行,必須清除緩存。用戶自己編寫的模塊,稱為文件模塊。并且和指向了同一個(gè)模塊對(duì)象。模塊路徑這是在定位文件模塊的具體文件時(shí)指定的查找策略,具體表現(xiàn)為一個(gè)路徑組成的數(shù)組。 前言 Node應(yīng)用是由模塊組成的,Node遵循了CommonJS的模塊規(guī)范,來(lái)隔離每個(gè)模塊的作用域,使每個(gè)模塊在它自身的命名空間中執(zhí)行。 CommonJS規(guī)范的主要內(nèi)容: 模塊必須通過(guò) module.exp...
摘要:模塊化是隨著前端技術(shù)的發(fā)展,前端代碼爆炸式增長(zhǎng)后,工程化所采取的必然措施。目前模塊化的思想分為和。特別指出,事件不等同于異步,回調(diào)也不等同于異步。將會(huì)討論安全的類型檢測(cè)惰性載入函數(shù)凍結(jié)對(duì)象定時(shí)器等話題。 Vue.js 前后端同構(gòu)方案之準(zhǔn)備篇——代碼優(yōu)化 目前 Vue.js 的火爆不亞于當(dāng)初的 React,本人對(duì)寫代碼有潔癖,代碼也是藝術(shù)。此篇是準(zhǔn)備篇,工欲善其事,必先利其器。我們先在代...
摘要:目前主流的模塊規(guī)范模塊通用模塊如果你在文件頭部看到這樣的代碼,那么這個(gè)文件使用的就是規(guī)范實(shí)際上就是全局變量這三種風(fēng)格的結(jié)合這段代碼就是對(duì)當(dāng)前運(yùn)行環(huán)境的判斷,如果是環(huán)境就是使用規(guī)范,如果不是就判斷是否為環(huán)境,最后導(dǎo)出全局變量有了后我們的代碼和 目前主流的模塊規(guī)范 UMD CommonJs es6 module umd 模塊(通用模塊) (function (global, facto...
摘要:本文主要介紹幾種模塊導(dǎo)入導(dǎo)出的方法。默認(rèn)導(dǎo)出如果只在一個(gè)文件中提供了一個(gè)導(dǎo)出的口,就可以使用默認(rèn)導(dǎo)出在中可以看到輸入同樣是模塊導(dǎo)入導(dǎo)出方法,使用的模塊方法,要比中的也就是模塊方法更加的差異非常大。 在開(kāi)發(fā)中基本不會(huì)將所有的業(yè)務(wù)邏輯代碼放在一個(gè)JS文件中,特別是在使用前端框架,進(jìn)行組件化開(kāi)發(fā)中時(shí),會(huì)復(fù)用相應(yīng)的組件。這時(shí),就會(huì)用到模塊導(dǎo)入/導(dǎo)出的方法了。 當(dāng)然,上面提到有模塊的概念,也是在...
摘要:所有依賴這個(gè)模塊的語(yǔ)句,都定義在一個(gè)回調(diào)函數(shù)中,等到加載完成之后,這個(gè)回調(diào)函數(shù)才會(huì)運(yùn)行。目前,主要有兩個(gè)庫(kù)實(shí)現(xiàn)了規(guī)范和。這些導(dǎo)出對(duì)象用名稱進(jìn)行區(qū)分,稱之為命名式導(dǎo)出。 簡(jiǎn)單粗暴,富婆給你說(shuō),其實(shí)我也沒(méi)太搞明白,最近看了一篇文章我才理清了一點(diǎn)點(diǎn)思路,最近整日沉迷于肥宅快樂(lè)水,技術(shù)都跟不上了,來(lái)篇文章,提神醒腦,朝著我的富婆夢(mèng)更近一步,早日走上富婆路,包養(yǎng)我家大狼狗!!! 為什么有模塊概念...
閱讀 2682·2021-11-16 11:53
閱讀 2745·2021-07-26 23:38
閱讀 2077·2019-08-30 15:55
閱讀 1758·2019-08-30 13:21
閱讀 3674·2019-08-29 17:26
閱讀 3313·2019-08-29 13:20
閱讀 882·2019-08-29 12:20
閱讀 3199·2019-08-26 10:21