javascript - ES6 导入/导出如何与 CommonJS 导出/require 一起使用

标签 javascript module ecmascript-6 commonjs

有时您想要组合这些语法,最常见的是在导入使用 commonjs 语法的内容时。一些案例已经在这里讨论过:

How to correctly use ES6 "export default" with CommonJS "require"?

但肯定还有更多情况可能发生!

最佳答案

正如 @Bergi 和 @Mike 在评论中指出的那样,它如何处理 ES6 导入/导出取决于转译器(最常见的是 Babel)。几个例子,您将通过 Babel (及其标准插件)获得什么:

CommonJS 导出,ES6 导入

module.exports = 1    // a.js
import one from './a' // b.js
// one === 1

module.exports = {one: 1}  // a.js
import obj from './a'      // b.js
// obj is {one: 1}

import * as obj from './a' // b.js
// obj.one === 1 ; however, check out the 'funky stuff' below

import {one} from './a'    // b.js
// one === 1

ES6 导出,CommonJS 要求

export default 1 // a.js
const one = require('./a').default
// one === 1

export const one = 1
const one = require('./a').one
// one === 1

时髦的东西

module.exports = 1          // a.js
import * as obj from './a'  // b.js
// obj is {default: 1}

module.exports = {one: 1}   // a.js
import * as obj from './a'  // b.js
// obj is {one: 1, default: {one: 1}}

关于javascript - ES6 导入/导出如何与 CommonJS 导出/require 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36720931/

相关文章:

javascript - 错误消息 'XMLHttpRequest cannot load. Cross origin requests are only supported for HTTP in AngularJS'

mobile - Joomla 3 隐藏模块仅适用于移动设备

ruby - 如何使用 Ruby 在 RSpec 测试之间重新加载模块?

ruby - 如何在 Ruby 中拼出整数?

javascript - 如何更改 ES6 箭头函数的 'this' 指向的内容?

javascript - 使用 JQuery 从 json 文件中通过键或 id 获取精确值

javascript - d3js条形图中Y轴的一些文本剪切

javascript - 我在为家庭作业构建模块时获得了意想不到的值(value)

javascript - ES6 Promise 和 Class 冲突

javascript - 具有复杂对象的 KnockoutJS 映射插件