ES Module在nodeJS下与CommonJS的交互

  • 一、ES Module导入CommonJS
  • 二、CommonJS导入ES Module
  • 三、总结

一、ES Module导入CommonJS

// es-module.mjs
import mod from "./common.js"
console.log(mod)
// common.js
module.exports = {foo:"this is foo"
}

执行node --experimental-modules es-module.mjs,打印结果如下:

得出结论,ES Module中可以导入CommonJS模块。

// common.js
exports.foo = "this is foo"

执行node --experimental-modules es-module.mjs,打印结果与之前一致。

注意,CommonJS始终只会导出一个默认的成员。

// es-module.mjs
import { foo } from './common.js'
console.log(foo)

结果如下:

意思大概就是common.js并没有导出一个叫foo的命名成员。

所以不能直接提取CommonJS模块中的成员。也再次说明,import不是对导出对象的解构

二、CommonJS导入ES Module

// es-module.mjs
export const bar = "this is bar"
//common.js
const mod = require("./es-module.mjs")
console.log(mod)

执行:node --experimental-modules common.js,结果如下:

报错的意思大概就是:不能通过require的方式去载入一个ES Module模块。

在node环境中不允许在CommonJS中通过require方式去载入ES Module模块,但是在其他环境例如webpack打包环境是可以的。

三、总结

  1. ES Module可以导入CommonJS模块
  2. CommonJS中不能导入ES Module模块
  3. CommonJS始终只会导出一个默认成员
  4. 注意import不是解构导出对象

ES Module在nodeJS下与CommonJS的交互相关推荐

  1. 彻底掌握 Commonjs 和 Es Module

    彻底掌握 Commonjs 和 Es Module Commonjs commonjs 实现原理 require 文件加载流程 require 模块引入与处理 require 加载原理 require ...

  2. ES Module 和 CommonJS

    一.前言 早期的 JavaScript 作为一种脚本语言,其产生的目的只是为了简单的表单验证或动画实现. 并且不需要分离多个 js 文件来写,功能相对简单.只需要内嵌一个 script 标签即可. a ...

  3. 面试题:Commonjs 和 Es Module区别

    一 前言 今天我们来深度分析一下 Commonjs 和 Es Module,希望通过本文的学习,能够让大家彻底明白 Commonjs 和 Es Module 原理,能够一次性搞定面试中遇到的大部分有关 ...

  4. 了解一下ES module 和 Commonjs

    最近测试了几个 ES module 和 Commonjs 的例子,理解了之前不太理解的概念,记录一下.要是想多了解的可以去看看阮老师的 Module 那部分.会贴一小部分的代码,不会贴所有验证的代码. ...

  5. 请说说CommonJS和ES module的区别

    CommonJS 1.module代表当前模块 在CommonJS中,一个文件就是一个模块,模块中的变量.函数.类都是私有的外部不可以访问,并规定module代表当前模块,exports是对外的接口. ...

  6. CommonJs和Es Module的区别

    为什么会有CommonJs和Es Module呢 我们都知道在早期JavaScript模块这一概念,都是通过script标签引入js文件代码.当然这写基本简单需求没有什么问题,但当我们的项目越来越庞大 ...

  7. 前端模块化详解(CommonJS、AMD、CMD、ES Module)

    大家好,我是一碗周,一个不想被喝(内卷)的前端.如果写的文章有幸可以得到你的青睐,万分有幸~ 写在前面 随着前端项目的不断复杂,代码日益膨胀,项目的维护难度随之越来越大,此时模块化也就相继的出现了,本 ...

  8. JS JavaScript模块化(ES Module/CommonJS/AMD/CMD)

    前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了, jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得 ...

  9. ES Module和CommonJS的区别

    ESM:import, import(), export, export default CommonJS: require(), module.exports 1. CommonJS输出的是值的拷贝 ...

最新文章

  1. MyBatis源码分析——MyBatis的扩展点(pugins)
  2. Hadoop HDFS概念学习系列之shell命令使用HDFS的一些其他命令(十九)
  3. 分支管理---Bug分支
  4. MySQL报错113_mysql 2003 (113)
  5. 6-14 数据库高级
  6. Problem E: 建立链表(线性表)
  7. JS代码 是否显示横竖条
  8. H5页面左图右边文字如何布局
  9. dcdc模块降额设计_一款高性能电源模块的设计思路
  10. Linux---管道通信的使用
  11. Thread 线程基础之-线程相关知识
  12. C语言中的神兽strdup
  13. Rust : async、await 初探
  14. 食堂饭卡管理系统C语言——课程设计实习
  15. 笔记 || css字体word字体大小对照表
  16. html中修改图片大小的标签,css如何设置图片的大小?
  17. ClippingNode做游戏的新手指导
  18. 知乎热议 | 何恺明 新作 如何?
  19. 课时31 永久储存:腌制一缸美味的泡菜
  20. c语言sscanf函数和结构体,C语言sprintf与sscanf函数 -电脑资料

热门文章

  1. 计算机网络基础【2】
  2. abp 链接本地mysql_ABP Vnext使用mysql数据库
  3. Android fastboot 基本操作命令(Android 刷机)
  4. 计算机考试重点题目与答案
  5. 近距离看GPU计算(2)
  6. mysql 中tinyint(1)
  7. nginx部署、配置优化
  8. Homebrew快速安装教程
  9. VMware Workstation 11序列号一枚
  10. 【NOIP模拟题】【DP】【LIS】【中缀表达式】2016.11.15 第一题 小L的二叉树 题解