详解详解ES6 export default 和和 import语句中的解构赋值语句中的解构赋值
主要介绍了详解ES6 export default 和 import语句中的解构赋值,小编觉得挺不错的,现在分享给大家,也给大
家做个参考。一起跟随小编过来看看吧
解构赋值解构赋值
有如下 config 对象
const config = {
host: 'localhost',
port: 80
}
要获取其中的 host 属性
let { host } = config
拆分成模块拆分成模块
以上两段代码,放到同一个文件当中不会有什么问题,但在一个项目中,config 对象多处会用到,现在把 config 对象放到
config.js 文件当中。
// 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
上面这段代码也不会有问题。但在 import 语句当中解构赋值呢?
// app.js
import { host } from './config'
console.log(host) // => undefined
问题所在问题所在
import { host } from './config'
这句代码,语法上是没什么问题的,之前用 antd-init 创建的项目,在项目中使用下面的代码是没问题的。奇怪的是我在之后
用 vue-cli 和 create-react-app 创建的项目中使用下面的代码都不能正确获取到 host。
// config.js
export default {
host: 'localhost',
port: 80
}
// app.js
import { host } from './config'
console.log(host) // => undefined
babel 对对 export default 的处理的处理
我用 Google 搜 'es6 import 解构失败',找到了下面的这篇文章:ES6的模块导入与变量解构的注意事项。原来经过 webpack
和 babel 的转换
在ES6中变量解构是这样的:
const a = { b: 1 }
const { b } = a
我们可以直接用解构赋值来获得对象的同名属性,等效于: