js中,export和module.export的区别

2023-05-16

说明

导出模块就是导出对象,export和module.exports两者区别:

  1. export是设置导出模块对象的指定属性
  2. module.export既可以设置导出模块的所有属性,又可以设置导出模块的指定属性。

预备知识:空文件导出

假如建立一个空白的js文件,并通过require方式加载该文件。
通过console.log的方式可以看出,该模块是一个空的json对象。

重新声明

exports 就是为空文件导出的模块对象增加属性。
module.exports 既可以为导出模块增加属性,又可以统一设置属性。

类比

let jQuery = {} // 这句相当于建立js文件,什么代码都不写,引入的时候,就会返回空json对象

jQuery.ajax = function() {...}
// 这句相当于 exports.ajax = function() {...}
// 也相当于 module.exports.ajax = function() {...}
// 但不一定相当于 module.exports = {ajax: function(){...}},因为只有模块对象为空的时候,这句才会和上面等价,如果模块对象不为空,这句会将原先模块对象的其他对象都清空掉。

exports使用方式

// 可以多次导出多个属性
exports.func = str => console.log(str)
exports.test = str => console.log(str)
// 返回结果 { func : [Function] , test : [Function] }

module.exports使用方式

// module.exports只认最后一次导出设置
module.exports = {
	func: str => console.log(str)
}
module.exports = {
	test : str => console.log(str)
}
// 返回结果 { test : [Function: test] }

步骤

  1. 创建demo01.js,写入exports代码
  2. 创建demo02.js,写入module.exports代码
  3. 创建demo03.js,不写入任何代码
  4. 创建index.js,写入调用代码

代码

// demo01
exports.func = str => console.log(str)
exports.test = str => console.log(str)
// demo02
module.exports = {
    func: str => console.log(str)
}
module.exports = {
    test: str => console.log(str)
}
// demo03

// index.js
const demo01 = require('./demo01')
const demo02 = require('./demo02')
const demo03 = require('./demo03')
demo01.func('I\'am demo01.func')
demo01.test('I\'am demo01.test')
console.log(demo01) // 返回 { func: [Function], test: [Function] }

demo02.test('I\'am demo02.test')
console.log(demo02) // 返回 { test: [Function: test] }

console.log(demo03) // 返回 {}

总结

当导出模块的时候,如果什么代码都不写,返回的是空json对象;
如果用exports写,那么exports每调用一次,只能设置返回模块的指定属性;
如果用module.exports写,那么即可以设置返回模块的整个对象,也可以设置返回模块的指定属性;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js中,export和module.export的区别 的相关文章

随机推荐

  • Latex正文中插入罗马数字

    1 问题描述 在用latex写论文的时候 xff0c 有的时候需要在正文里面插入罗马数字 2 解决方法 目前找到一种还算方便的解决办法 xff0c 在正文中插入如下代码 xff1a newcommand RNum 1 uppercase e
  • Opencv error unspecified error incorrect element name operator <<

    1 问题描述 今天在用opencv的FileStorage类进行xml文件读写操作的时候报了个错 源代码如下所示 xff1a include lt opencv2 opencv hpp gt include lt vector gt inc
  • PCA(主成成分分析)和LDA(线性判别分析)详解-共性和区别

    注 xff1a 这里说的LDA实际上讲的是Fisher linear discriminant analysis 在machine learning领域 xff0c PCA和LDA都可以看成是数据降维的一种方式 但是PCA是unsuperv
  • 【嵌入式】按键控制 LED

    嵌入式 按键控制 LED 1 操作内容 2 原理解释 2 1 实验箱按键电路 2 2 实验箱LED电路 2 3 寄存器说明 3 操作步骤 3 1 编写键控制 3 2 安装 USB 驱动 3 2 使用 DNW 软件下载裸机程序至 SRAM 中
  • Latex转word

    1 问题描述 最近做毕设的时候本来论文都已经在latex里面写好了 xff0c 但是学院要求用word格式 不想把自己latex写好的公式再打一遍 xff0c 而且word写公式很麻烦 xff0c 有的latex里面的符号word自带的公式
  • ubuntu系统备份与恢复-remastersys方法

    对于刚入门ubuntu的人来说 xff0c 配置各种各样环境的过程中往往会把系统装崩溃 每次都重新安装ubuntu看起来非常麻烦 xff0c 一个好的办法就是把我们某个阶段配置好环境的ubuntu做个备份 xff0c 然后万一系统崩溃了 x
  • 论文阅读-《Semantic Segmentation with Reverse Attention》

    BMVC 2017 oral code https drive google com drive folders 0By2w A aM8Rzbllnc3JCQjhHYnM 1 Motivation 作者这篇文章的主要目的是为了提高seman
  • python numpy中axis的含义

    不同的编程语言对于多维数组的索引方式往往不太一样 xff0c 下面主要讲一下python numpy里面axis的含义 numpy当中axis的值表示的是这个多维数组维度的下标 xff0c 比如有一个二维数组a xff0c a的shape是
  • Deep Watershed Transform for Instance Segmentation

    Min Bai amp Raquel Urtasun UfT 1 传统的分水岭算法简介 图像处理中的分水岭算法常用来做图像区域分割 segmentation xff0c 基本的思路是计算一张energy map来表示图像 xff0c 其中物
  • 【华为2019年校园招聘】2019-4-17 软件题-最大时间问题

    输入描述 输入为一个整数数组 xff0c 数组内有六个整数 输入整数数组长度为6 xff0c 不需要考虑其他长度 xff0c 元素值为0或者正整数 xff0c 6个数字每个数字只能使用一次 输出描述 输出为一个24进制格式的时间 xff0c
  • 【华为2019年校园招聘】2019-4-17 软件题-水果摊小买卖

    题目描述 小王手里有点闲钱 xff0c 想着做点卖水果的小买卖 xff0c 给出两个数组m xff0c n xff0c 用m i 表示第i个水果的成本价 xff0c n i 表示第i个水果能卖出的价钱 xff0c 假如现在有本钱k元 xff
  • ubuntu20.04安装微信和QQ,腾讯会议,以及一些其他实用软件

    由于电脑性能不行 xff0c 所以有windows 转为ubunut20 04 xff0c 这样电脑流畅多了 美化了下它的UI xff0c 美化的差不多了 xff0c 之后 xff0c 就差安装微信和qq了 xff0c 微信对于我来说是必要
  • 组合导航(GNSS+惯性导航)

    一 GNSS 至少需要四颗星 怎么判断GNSS数据是否准确 xff1f 数据中是否携带星数 xff1f 二 惯性导航 关于磁力计的使用 xff1a 1 xff09 类似重力 xff0c 磁力也是一个矢量 地球任意位置的磁力在东北天地理系下的
  • ROS之消息发布和接收

    ros Subscriber subscriber 61 nh subscribe topic name buff size amp CloudSubscriber msg callback this 参数1 xff1a 话题名字 参数2
  • IEDA 安装actiBPM插件

    一 引言 因为有个项目要用到activiti 来做工作流引擎 xff0c 但是发现自己的IDEA的插件市场里面已经找不到 actiBPM 这个插件了 xff0c 无奈只能去IEDA 插件网站先下载下来再进行安装了 二 actiBPM插件下载
  • STM32f103调试笔记(2)——使用ST-LINK下载程序的时候,不按住复位键无法下载?

    这也是很常遇见的一个问题了 使用ST Link下载程序的时候 xff0c 总是显示无法识别设备 xff0c 查阅了网上的解决方法 xff0c 只要按住复位键 xff0c 然后点击LOAD以后迅速松开复位键就可以了 这也是一种方法啦 xff0
  • VR/AR技术杂选

    相机频率 xff1a 一般来说 xff0c 相机频率60Hz是指相机的帧率为60fps xff0c 即frame per second 每秒钟60帧 红外探测器 xff1a 分为两种 xff0c 一种是基于光电特性 xff0c 一种是基于热
  • 【图像】光谱波长分布图

    可见光范围内的颜色倒序为 赤橙黄绿青蓝紫 猜你喜欢 xff1a x1f447 x1f3fb 图像 一个像素占几个字节 xff1f 多少比特 xff1f 图像 尺度不变特征变换算法 xff08 SIFT xff09 基于小波变换的图像边缘检测
  • 百度2014校园招聘-研发工程师笔试题(济南站)

    一 xff0c 简答题 30分 1 xff0c 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f xff08 10分
  • js中,export和module.export的区别

    说明 导出模块就是导出对象 xff0c export和module exports两者区别 xff1a export是设置导出模块对象的指定属性module export既可以设置导出模块的所有属性 xff0c 又可以设置导出模块的指定属性