Node.js 里可分为 CommonJS 模块和 ECMAScript 模块(ESM)两种不同的模块系统。

CommonJS 模块是 Node.js 最初支持的模块系统,它使用 require() 函数来导入模块,使用 module.exportsexports 对象来导出模块。这种模块系统通常只能在 Node.js 环境下使用,并且不允许在浏览器环境中使用。

ECMAScript 模块是 JavaScript 的标准模块系统,它使用 importexport 关键字来导入和导出模块。它可以在 Node.js 环境下和现代浏览器环境中使用,具有更好的跨平台兼容性和可移植性。Node.js 从版本12开始支持 ECMAScript 模块作为实验性功能,并在版本14中正式支持。

cjs文件使用mjs方法

 1 //默认方式
2 const fs = require("fs");
3 console.log(fs);
4
5 //转换方式
6 import("fs")
7 .then((module) => {
8 console.log(module);
9 })
10 .catch((error) => {
11 console.log("处理错误");
12 });

mjs文件使用cjs方法

 1 // 默认方法
2 import fs from "fs";
3
4 console.log(fs);
5
6 //转换的方法
7 import { createRequire } from "module";
8 const require = createRequire(import.meta.url);
9 const fs = require("fs");
10
11 console.log(fs);

require和import的区别以及相互使用的方式的更多相关文章

  1. [转]webpack中require和import的区别

    webpack中可以写commonjs格式的require同步语法,可以写AMD格式的require回调语法,还有一个require.ensure,以及webpack自己定义的require.incl ...

  2. webpack中require和import的区别

    commonjs同步语法 经典的commonjs同步语法如下: var a = require('./a'); a.show(); 此时webpack会将a.js打包进引用它的文件中.这是最普遍的情形 ...

  3. require和import的区别

    require:是一种common协议,大家按照这个约定书写自己的代码,实现模块化. import:是ES6的模块语法实现.是语言自身的模块实现.

  4. Quick中require与import的区别

    载入一个模块 import() 与 require() 功能相同,但具有一定程度的自动化特性. 假设我们有如下的目录结构: app/ app/classes/ app/classes/MyClass. ...

  5. webpack中关于require与import的区别

    1.require常见使用场景: var path = require('path') var utils = require('./utils') 此时webpack会将path/utils/con ...

  6. JS篇(008)-require 与 import 的区别

    答案:两者的加载方式不同.规范不同 第一.两者的加载方式不同,require 是在运行时加载,而 import 是在编译时加载 require('./a')(); // a 模块是一个函数,立即执行 ...

  7. require与import

    require 和 import,都是为了JS模块化使用.最近项目中,因为多人协同开发,出现了一个项目中同时使用了require 和 import 引入依赖的情况.正常情况下,一个项目中最好是对引入方 ...

  8. JS 中的require 和 import 区别整理

    ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使 ...

  9. Objective-C 【关于导入类(@class 和 #import的区别)】

    之前我们分析过 #include 和 #import 的区别,#import不会引起交叉编译,#import 确定一个文件只能被导入一次,使在递归包含中不会出现问题. 那么 #import 和 @cl ...

  10. 转:彻底搞清楚javascript中的require、import和export

    原文地址:彻底搞清楚javascript中的require.import和export   为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Ja ...

随机推荐

  1. 百度指数 Cipher-Text、百度翻译 Acs-Token 逆向分析

    K 哥之前写过一篇关于百度翻译逆向的文章,也在 bilibili 上出过相应的视频,最近在 K 哥爬虫交流群中有群友提出,百度翻译新增了一个请求头参数 Acs-Token,如果不携带该参数,直接按照以 ...

  2. Fabric区块链浏览器(2)

    本文是区块链浏览器系列的第四篇. 在上一篇文章介绍如何解析区块数据时,使用session对客户端上传的pb文件进行区分,到期后自动删除. 在这片文章中,会着重介绍下认证系统的实现,主要分为三部分: 添 ...

  3. 开发QQ官方机器人

    QQ 频道机器人开发简明教程 1. 简介 QQ 频道机器人是一种可以在 QQ 频道中与用户进行互动的服务.这个教程旨在帮助新手学习如何使用 Python 的官方SDK,快速实现一些基本的机器人功能. ...

  4. 如何区分Unity国内版和国际版

    从这三个地方都可以判断使用的Unity是国内版本还是国际版,国内版的版本号后面会多出c1,而国际版则不会有c1结尾. 安装目录名 unity hub - 安装 - 查看当前安装的Unity各版本 un ...

  5. Django笔记七之ManyToMany和OneToOne介绍

    本文首发于本人微信公众号:Hunter后端 原文链接:Django笔记七之ManyToMany和OneToOne介绍 ManyToMany 是一种多对多的关系,在用途和使用方法上和外键 Foreign ...

  6. 3.2 Windows驱动开发:内核CR3切换读写内存

    CR3是一种控制寄存器,它是CPU中的一个专用寄存器,用于存储当前进程的页目录表的物理地址.在x86体系结构中,虚拟地址的翻译过程需要借助页表来完成.页表是由页目录表和页表组成的,页目录表存储了页表的 ...

  7. 每日一道Java面试题:说一说Java中的泛型?

    写在开头 今天的每日一道Java面试题聊的是Java中的泛型,泛型在面试的时候偶尔会被提及,频率不是特别高,但在日后的开发工作中,却是是个高频词汇,因此,我们有必要去认真的学习它. 泛型的定义 什么是 ...

  8. docker之redis集群部署

    docker之redis集群部署 PART01: 3主3从redis集群部署 3主3从redis集群配置 关闭防火墙,启动docker服务 如果报以下错误,应该是docker 服务没有启动,可以执行下 ...

  9. 小知识:安装系统后唯独搜不到自己的Wi-Fi

    遇到的问题,笔记本在安装Win10系统后在可用Wi-Fi热点中唯独搜不到自己的Wi-Fi. 咨询宽带售后的技术人员,说可能是因为我目前使用的是Wi-Fi 6,而我的笔记本可能是网卡过旧,不支持Wi-F ...

  10. 常用TS总结

    自己常用的 TS 写法总结,应该会一直更新.可使用 TS在线编译 校验 TS 语法. 基本用法 普通 const num: number = 10 const isStop: boolean = fa ...