module.exports,exports import require export

1.ES6使用export和import来导出、导入模块
2.ES6模块的设计思想是尽量的静态化,是编译是就能确定模块的依赖关系,以及输入和输出的变量
3.node的编程思想是模块化,所以每个文件就是一个模块,每个模块的内部,module变量代表当前模块,是一个对象,他的exports是对外接口,加载某个模块其实就是记在模块的module.exports属性。node用的是CommonJs规范,CommonJS用exports和require来导出、导入文件。import和require都是被模块化所使用的。

在es5中,用module.exports和exports导出模块,用require引入模块。
es6新增export和export default导出模块,import导入模块。

module.exports和exports的区别:

module和exports是node.js给每个js文件内置的2个对象。

例如:console.log('1--', module); console.log('2--', exports)
在这里插入图片描述
注意:module.exports和exports一开始都是一个空对象{},实际上,这两个对象指向同一块内存。这也就是说module.exports和exports是等价的(有个前提:不去改变它们指向的内存地址)。

require引入的对象本质上是module.exports。这就产生了一个问题,当 module.exports和exports指向的不是同一块内存时,exports的内容就会失效。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

export和 export default的区别:

一、在es6中的两种基本用法
新建两个文件:a.js, b.js。a.js用于导出模块,b.js用户导入模块。两个文件放在同一目录下。

  • 第一种用法
    export default导出:
    在这里插入图片描述
    export default导出对应的导入:
    在这里插入图片描述
  • 第二种用法
    export导出:
    在这里插入图片描述
    export 导出对应的导入:
    在这里插入图片描述
    二、区别
    可以在a.js中打印出module,通过打印的内容找到2种导出模块的区别。
    在这里插入图片描述
    在这里插入图片描述
    注:一般来说,module.exports和exports与require对应。也就是用module.exports和exports导出的模块,则用require导入。(不是绝对,如果代码支持es6,也可以用import引入)。

import和require的区别

遵循的不同:
1.import是ES6的一个语法标准
(若要兼容所有的浏览器必须转化为ES5语法)
2.require遵循AMD规范引入方式

调用时间不同:
1.require是运行时调用,所以理论上可用于代码的任何地方
2.import是编译时调用,必须放在文件的开头
(import有提升效果,会提升到整个模块的头部,首先执行,他是静态执行的,不能使用表达式和变量即在运行时才能拿到结果的语法结构)

本质不同:
1.require是赋值过程,例如:const path=require('path');
2.import是结构过程,在node中用babel支持es6,把es6转化为es5,import语法会被转化成require

require和exports

都遵循CommonJs/AMD,只在运行时确定依赖关系及输入输出的变量,无法进行静态化
用法:
const fs=require(‘fs’);
exports.fs=fs;
module.exports=fs;

import/export

遵循ES6规范,支持编译时静态分析,是module的2个命令。
写法多样:
import fs from 'fs';
import {default as fs } from 'fs';
import * as fs from 'fs';
import {readFile } from 'fs';
import {readFile as read } from "fs";
import fs,{readFile} from 'fs';

export default fs;
export const fs;
export function add(){};
export {readFile,read} from 'fs';
export * from 'fs';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
module.exports通过import导入时,需要使用require关键字。在CommonJS模块规范中,module.exports是一个对象,代表整个js文件对外暴露的对象。可以通过require关键字将其导入到其他文件中使用。例如,如果有一个文件A.js中有以下代码: module.exports = { name: 'John', age: 25 } 那么在另一个文件B.js中,可以使用以下代码导入A.js中的module.exports对象: const obj = require('./A.js') console.log(obj.name) // 输出 'John' console.log(obj.age) // 输出 25 需要注意的是,使用require导入的时候,不需要加上{},因为module.exports是一个对象,可以直接访问其中的属性。 #### 引用[.reference_title] - *1* *3* [requireexports,module.exports。importexport,export default](https://blog.csdn.net/zz18256889177/article/details/106356640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [(区别、详解、使用)module.exports与exports,exportexport default,importrequire](https://blog.csdn.net/qq_59747594/article/details/127700908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值