module.exports和exports、export和export default、require和import的详解

2023-05-16

一、分类

commonJS:导出(module.exports和exports)、导入(require)。
ES6:导出(export和export default)、导入(import)。

二、module.exports和exports的区别与联系

module.exports属性表示当前模块对外输出的接口,其他模块加载该模块,实际就是读取module.exports变量。写法:

let aa = () => {
  console.log('aa');
}
let bb = () => {
  console.log('bb');
}
let cc = () => {
  console.log('cc');
}

module.exports.aa = aa;
module.exports = {
  bb: bb,
  cc: cc
}

exports是module.exports的一个引用,指向module.exports,也就是说使用者最终调用的是module.exports,而不是exports。写法:

let aa = () => {
  console.log('aa');
}
let bb = () => {
  console.log('bb');
}

exports.aa = aa;
exports.bb = bb;

提示:
(1)直接给exports赋值并不会改变module.exports的值,因此不能直接给exports赋值。
(2)使用exports时,要确保module.exports为空,也就是说不具备任何属性及方法,否则exports不生效。

<!-- a.js -->
let aa = 'aa'

exports = {
  aa: aa
}

<!-- b.js -->
let util = require('./a.js');
console.log(util); // util的值为{}
<!-- a.js -->
let aa = 'aa'
let bb = 'bb'

module.exports = {
  aa: aa
}
exports.bb = bb;

<!-- b.js -->
let util = require('./a.js');
console.log(util); // {aa: 'aa'}

三、export和export default的区别与联系

export用于规定模块的对外接口,一个文件中可写多个。写法:

let aa = 'aa';
let bb = 'bb';

export let cc = 'cc'; //第一种写法
export function sum(x, y) { //第二种写法
  return x + y;
}
export {aa, bb} //第三种写法

export default也用于规定模块的对外接口,一个文件只能写一个。写法:

let aa = 'aa';
let bb = 'bb';

export default aa; //第一种写法
export default function sum(x, y) { //第二种写法
  return x + y;
}
export default {aa, bb} //第三种写法

提示:
(1)在同一个文件中,export可以有多个,export default只能有一个。
(2)使用export导出时,应使用{}分别导入;使用export default导出时,应使用一个变量整体导入。

/******export******/
export {aa, bb, cc};//util.js
import {aa, bb, cc} from 'util.js'

/******export default******/
export default {aa, bb, cc};//util.js
import util from 'util.js'
// util.aa、util.bb、util.cc

四、require和import的区别

  1. require和import都是用来导入模块。
  2. require属于commonJS语法,import属于ES6语法。
let aa == require('util.js');
import bb from 'util.js';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

module.exports和exports、export和export default、require和import的详解 的相关文章

  • python 中的 win32con 模块是什么?我在哪里可以找到它?

    我正在构建一个在 Windows 中使用 python 和 c 的开源项目 我收到以下错误消息 ImportError No module named win32con 同样的情况也发生在它正在运行的 预构建 代码中 除了我的电脑 P 我认
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • 在另一个文件中扩展类的正确方法是什么?

    这就是我在 foo php 中的内容 class Foo public foo NULL public foo2 NULL public function setFoo foo foo2 this gt foo foo this gt fo
  • 将图层坐标导出到 Excel 的脚本

    我找到了一个脚本 可以将我的图层坐标从 Photoshop CS5 导出到 XML 我希望这里有人可以帮助我编辑该脚本以将坐标记录到 xls 文件中 另外 如果可以将每个坐标放在单独的行上 那就太好了 下面是我想修改以满足我需要的脚本 Th
  • 打字总是抱怨全局模块

    我对打字稿很陌生 无论我尝试安装什么类型 我都会得到 打字错误 消息 尝试将 Angular 编译为外部模块 但它看起来像全局模块 我只是想做 typings install dt angular 我究竟做错了什么 Update 如果您对此
  • PHP Microsoft Excel 文件生成/导出类

    我一直在寻找一个好的 Excel 文件生成类 但还没有找到 我的首要问题是 虽然我可以在 Excel 中打开导出的文件 运行 2007 年 但我总是收到一条警告 文件的格式与文件扩展名不同 我注意到 phpMyAdmin 中的 Excel
  • 如何设置打开文件时默认展开?

    In my vimrc我已经把set foldmethod syntax启用方法折叠等 但是 我不喜欢每次打开文件时都会折叠整个文件的默认设置 有没有办法启用foldmethod 但是当我打开文件时文件是否展开了 set foldlevel
  • 如何在 R 中为所有plot.default、plot 或lines 调用设置默认颜色

    为了简化我的日常 R 交互 我想为所有绘图设置默认颜色 例如 假设我想要用红线绘制所有绘图 例如在 gnuplot 中 到目前为止 这是我的 Rprofile 的片段 setHook packageEvent grDevices onLoa
  • Dart 有类似 Python 中的“defaultdict”之类的东西吗?

    我想做的是下面这个 如果可能的话 你能教我如何做到这一点吗 import package my package data object dart Map
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • AngularJS 选择元素设置所选索引

    所以我使用的是 Angular 这是我选择的 html
  • 检查没有 .svn 文件的 svn 存储库

    我的专用服务器 Centos 5 5 上有一个 svn 存储库 位于 var svn myRepository 我只想将这些文件复制到我的生产文件夹 var www myWebapp 中 据我了解 SVN 我只能在本地项目文件夹上使用 sv
  • 在json文件中导出neo4j数据库

    我想以 JSON 文件导出 Neo4j 图形数据库 This is a Export JSON button in Neo4j web UI version as shown in attached image below 但是 Neo4j
  • Android studio 导入模块按钮缺失

    我已经使用 Eclipse 很长时间了 但我想尝试一下 Android Studio 所以我创建了新项目 现在我想向其中添加 SlidingMenu 库 我发现一些教程说要转到项目结构 单击加号按钮并选择导入模块 但是没有导入模块选项 当我
  • MySQL Workbench:如何将 mysql 数据库导出到 .sql 文件?

    我需要将 mysql 工作台中的数据库导出到文件 sql 该怎么办 在 MySql Workbench 版本 8 0 中 您只需按照以下步骤操作即可 Go to Server tab Go to 数据库导出 这会打开类似这样的东西 在中选择
  • 当 Webp 可用时,Chrome 默认为 JPG。为什么?

    当 webp 文件可用时 Chrome 默认使用 jpg png 文件 我通过 Lighthouse 进行了网站审核 它建议 正确调整图像大小并使用 下一代 格式 将文件更改为 webp 并创建多个大小的文件 后 我将文件添加到图片标签下
  • 有没有对数字(千)进行分组的函数?

    小 模块中是否隐藏着一个函数 它为我执行此操作 my var 23654325432 var reverse var var s d 3 K d g var reverse var I like 数字 格式 http search cpan
  • SQL Server 列的默认登录用户

    如何创建一个列 其中包含当时在表中创建该行的用户的默认值 I tried system user 但这显示了从表中进行选择时登录的人员 尝试这样的事情 CREATE TABLE DemoTable ID INT IDENTITY 1 1 S
  • Pandas datetools模块错误

    我正在尝试从 pandas datetools 调用模块 但收到错误消息 指出 mofule 对象没有我所调用的名称的属性 想知道是否有人可以阐明这个问题 下面是我尝试使用的代码 import blpapi import pandas as
  • 哪些 babel 设置适合导出库?

    我是 Babel Webpack 的新手 对 babelrc 配置有一些困惑 第一个配置 presets babel env modules false useBuiltIns usage targets gt 0 25 not dead

随机推荐