ES6 export default 和 import語(yǔ)句中的解構(gòu)賦值

解構(gòu)賦值

有如下 config 對(duì)象

const config = {
  host: 'localhost',
  port: 80
}

要獲取其中的 host 屬性

let { host } = config

拆分成模塊

以上兩段代碼碍拆,放到同一個(gè)文件當(dāng)中不會(huì)有什么問(wèn)題,但在一個(gè)項(xiàng)目中,config 對(duì)象多處會(huì)用到,現(xiàn)在把 config 對(duì)象放到 config.js 文件當(dāng)中。

// config.js
export default {
 host: 'localhost',
  port: 80
}

app.js 中 import config.js

// app.js
import config from './config'

let { host } = config
console.log(host) // => localhost
console.log(config.host)  // => localhost

上面這段代碼也不會(huì)有問(wèn)題。但在 import 語(yǔ)句當(dāng)中解構(gòu)賦值呢?

// app.js
import { host } from './config'

console.log(host) // => undefined

問(wèn)題所在

import { host } from './config'

這句代碼,語(yǔ)法上是沒(méi)什么問(wèn)題的未斑,之前用 antd-init 創(chuàng)建的項(xiàng)目蜡秽,在項(xiàng)目中使用下面的代碼是沒(méi)問(wèn)題的寞蚌。奇怪的是我在之后用 vue-cli 和 create-react-app 創(chuàng)建的項(xiàng)目中使用下面的代碼都不能正確獲取到 host

// config.js
export default {
  host: 'localhost',
  port: 80
}

// app.js
import { host } from './config'
console.log(host) // => undefined

babel 對(duì) export default 的處理

我用 Google 搜 'es6 import 解構(gòu)失敗',找到了下面的這篇文章:ES6的模塊導(dǎo)入與變量解構(gòu)的注意事項(xiàng)。原來(lái)經(jīng)過(guò) webpack 和 babel 的轉(zhuǎn)換

export default {
  host: 'localhost',
  port: 80
}

變成了

module.exports.default = {
  host: 'localhost',
  port: 80
}

所以取不到 host 的值是正常的鲸拥。那為什么 antd-init 建立的項(xiàng)目有可以獲取到呢撞叨?

解決

再次 Google牵敷,搜到了GitHub上的討論 。import 語(yǔ)句中的"解構(gòu)賦值"并不是解構(gòu)賦值,而是 named imports,語(yǔ)法上和解構(gòu)賦值很像卫病,但還是有所差別,比如下面的例子。

import { host as hostName } from './config' // 解構(gòu)賦值中不能用 as

let obj = {
  a: {
    b: 'hello',
  }
}

let {a: } = obj // import 語(yǔ)句中不能這樣子寫
console.log(b) // => helllo

這種寫法本來(lái)是不正確的箍邮,但 babel 6之前可以允許這樣子的寫法,babel 6之后就不能了味滞。

// a.js
import { foo, bar } from "./b"
// b.js
export default {
  foo: "foo",
  bar: "bar"
}

所以還是在import 語(yǔ)句中多加一行

import b from './b'
let { foo, bar } = b

或者

// a.js
import { foo, bar } from "./b"
// b.js
let foo =  "foo"
let bar = "bar"
export { foo, bar }

或者

// a.js
import { foo, bar } from "./b"
// b.js
export let foo =  "foo"
export let bar = "bar"

antd-init 使用了 babel-plugin-add-module-exports爽醋,所以 export default 也沒(méi)問(wèn)題土匀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末解愤,一起剝皮案震驚了整個(gè)濱河市异希,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌授药,老刑警劉巖九火,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拢驾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)案疲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門封恰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人褐啡,你說(shuō)我怎么就攤上這事诺舔。” “怎么了备畦?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵低飒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我懂盐,道長(zhǎng)褥赊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任莉恼,我火速辦了婚禮拌喉,結(jié)果婚禮上速那,老公的妹妹穿的比我還像新娘。我一直安慰自己尿背,他們只是感情好端仰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著田藐,像睡著了一般荔烧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汽久,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天鹤竭,我揣著相機(jī)與錄音,去河邊找鬼回窘。 笑死诺擅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啡直。 我是一名探鬼主播烁涌,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼酒觅!你這毒婦竟也來(lái)了撮执?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舷丹,失蹤者是張志新(化名)和其女友劉穎抒钱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颜凯,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谋币,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了症概。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾额。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖彼城,靈堂內(nèi)的尸體忽然破棺而出诅蝶,到底是詐尸還是另有隱情,我是刑警寧澤募壕,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布调炬,位于F島的核電站,受9級(jí)特大地震影響舱馅,放射性物質(zhì)發(fā)生泄漏缰泡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一代嗤、第九天 我趴在偏房一處隱蔽的房頂上張望匀谣。 院中可真熱鬧照棋,春花似錦、人聲如沸武翎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宝恶。三九已至符隙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垫毙,已是汗流浹背霹疫。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留综芥,地道東北人丽蝎。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像膀藐,于是被迫代替她去往敵國(guó)和親屠阻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容