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

发布于 2022-09-11 20:48:50 字数 563 浏览 22 评论 0

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 有什么简单的方法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

辞旧 2022-09-18 20:48:50
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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文