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';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值