babel 6 开始为什么不支持 es6 import 解构

新手上路,请多包涵

babel 6 不支持 es6 import 解构,babel 7 不支持add-module-exports

问题描述

将原系统代码准备升级到 babel 7. 发现原来 import 解构写法报错

相关代码

1.错误代码:

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

需要需要改成:

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

原来系统可以是因为babel6 时引入了 babel-plugin-add-module-exports 插件。
升级到babel 7 后不支持了,并且官方也建议不要使用 import 解构的写法

我的问题

1.import 解构是es6 常用的写法。babel 作者是出于什么考虑 不支持这种写法的?
2.旧代码升级成 babel 7 有什么简单的方法吗?

阅读 3.3k
1 个回答
新手上路,请多包涵
import { foo, bar } from "./b"
// b.js
export default {
  foo: "foo",
  bar: "bar"
}

这种写法本身就不对的,export default 相当于 把后面的对象赋值给 default
等同于

var default = {
  foo: "foo",
  bar: "bar"
}

export default

由于import 是静态加载
所以 import 时不知道 default 是一个对象无法知道 里面具体是什么值 所以不能解构

改进方案一:

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

改进方案二:

export {
  foo: "foo",
  bar: "bar"
}

import { foo, bar } from "./b"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进