国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

node中 模塊導(dǎo)入和導(dǎo)出的探究

Anshiii / 1509人閱讀

摘要:模塊的文件名,帶有絕對(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.1 
操作系統(tǒng) Mac
module

我們打印出module,結(jié)果如下

module.id 模塊的識(shí)別符,通常是帶有絕對(duì)路徑的模塊文件名。
module.filename 模塊的文件名,帶有絕對(duì)路徑。
module.loaded 返回一個(gè)布爾值,表示模塊是否已經(jīng)完成加載。
module.parent 返回一個(gè)對(duì)象,表示調(diào)用該模塊的模塊。
module.children 返回一個(gè)數(shù)組,表示該模塊要用到的其他模塊。
module.exports 表示模塊對(duì)外輸出的值。
exports與module.exports



我們可以看到在模塊中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

export default
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ō)都是一樣的

import 當(dāng)modle.js為export的形式時(shí)
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

相關(guān)文章

  • Node.js模塊化機(jī)制原理探究

    摘要:要想讓模塊再次運(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...

    aikin 評(píng)論0 收藏0
  • javascript知識(shí)點(diǎn)

    摘要:模塊化是隨著前端技術(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)備篇,工欲善其事,必先利其器。我們先在代...

    Karrdy 評(píng)論0 收藏0
  • 深入 CommonJs 與 ES6 Module

    摘要:目前主流的模塊規(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...

    sanyang 評(píng)論0 收藏0
  • JS 模塊導(dǎo)入/導(dǎo)出

    摘要:本文主要介紹幾種模塊導(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)然,上面提到有模塊的概念,也是在...

    wall2flower 評(píng)論0 收藏0
  • 富婆給你說(shuō)require、importexport

    摘要:所有依賴這個(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)我家大狼狗!!! 為什么有模塊概念...

    cod7ce 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<