2.5 module.exports\exports\export\import用法

本文详细介绍了Node.js中的模块导出方法,包括exports和module.exports的区别及使用场景,并深入探讨了ES6中export关键字的用法及其与传统Node.js模块系统的差异。

一、nodejs中

1、exports导出

a.新建test.js文件

const x = {
    a:1,
    b:2
}
const y = {
    a:1,
    b:2
}

function f(){
    console.log(1)
}

exports.n = f
exports.m = {x,y}

b.新建index.js

const l =require('./test1.js')

console.log(l)

output://{ n: [Function: f], m: { x: { a: 1, b: 2 }, y: { a: 1, b: 2 } } }

//可以通过l.n()、l.m.x.a这种方式调用

module.exports.x 等同于exports.x

c.如果在test.js中使用module.exports = f,则index.js中的l等同于f,可以通过l()方式调用

d.如果使用exports = f,则在index.js中的l,其实是一个空对象

e.通过在test.js对module.exprots或exports.x不同的赋值方式,可以改变index.js中的引入的变量类型

module.exports = {f,x};

通过{}对module.exports赋值,则index.js中引入的l是一个对象

module.exports = [f,x];

通过module.exports = [f,x],则index.js中引入的l是一个数组

f.总结

exports.x等于module.exports.x

exports = x 导出的是一个空对象

module.exports = x 可以正常导出变量和方法

exports == module.exports

二、ES6中导出

1、export导出

导出变量

export var a= 1;

批量导出变量

var a= 1; var b= 2;

export {a, b,};

导出方法

export funcion f(x,y){

    return x*y;}

批量导出

function a(){}

function b(){}

export {

a as x,

b as y

}

总结:

export后面如果不是跟着表达式的话,必须使用{}

export不能在代码块的作用域内

2、import导入

批量导入

import {a, b} from ''

别名导入

import { a as x } from '';

整体导入

import {* as y} from '';

总结:

import 后面不能使用变量和表达式

import会优先执行

导入的js文件后缀.js可以省略

3、export default

export default function () { console.log('a'); }

引用

import a from '';

a是别名,不用使用{},可以任意命名

4、import()

按需加载

if (condition) {
  import('moduleA').then(...);
} else {
  import('moduleB').then(...);
}

事件加载

button.addEventListener('click', event => {
  import('moduleA')
  .then(...)
});
这些关键字都是用于在 JavaScript 中导出模块的方式。 1. `module.exports` 是 CommonJS 规范中用于导出模块的方式。在 Node.js 中,`module.exports` 是一个指向当前模块导出对象的引用。可以通过给 `module.exports` 赋值来导出一个对象或函数。 例如: ``` // 导出一个函数 function add(a, b) { return a + b; } module.exports = add; ``` 2. `exports` 是 `module.exports` 的一个辅助对象,可以通过给 `exports` 对象的属性赋值来导出模块。 例如: ``` // 导出一个对象 exports.name = 'Tom'; exports.age = 18; ``` 这个模块实际上等价于: ``` module.exports = { name: 'Tom', age: 18 }; ``` 3. `export` 是 ES6 中用于导出模块的关键字。可以通过 `export` 关键字导出一个变量、函数或对象。 例如: ``` // 导出一个变量 export const name = 'Tom'; // 导出一个函数 export function add(a, b) { return a + b; } // 导出一个对象 export default { name: 'Tom', age: 18 }; ``` 4. `export default` 也是 ES6 中用于导出模块的关键字,但是它只能导出一个默认值。 例如: ``` // 导出一个默认值 export default function add(a, b) { return a + b; } // 导出一个默认对象 export default { name: 'Tom', age: 18 }; ``` 在导入模块时,可以使用 `import` 关键字来引入模块。例如: ``` // 导入 CommonJS 模块 const add = require('./add'); // 导入 ES6 模块 import { name, add } from './module'; import person from './person'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值