有关node中的模块知识,exports,moudle.export,export,export.default等

一、node模块

Node中的模块系统是遵循CommonJS规范的。

CommonJS规范:由于之前js以前比较混乱,各写各的的代码,比较混乱,没有一个模块的概念,而这个规范就是对模块的一个定义

CommonJS定义的模块分为:模块标识(module),模块定义(exports),模块引用(require)

1、exports和module.exports

一个node 在执行一个文件时,会给这个文件内生成一个exports和module对象,而module又有一个exports属性,它们之间的关系如下图,都指向一块{}内存区域

exports = module.exports = {};

在这里插入图片描述

//utils.js
let a = 100;

console.log(module.exports); //能打印出结果为:{}
console.log(exports); //能打印出结果为:{}

exports.a = 200; //这里辛苦劳作帮 module.exports 的内容给改成 {a : 200}

exports = '指向其他内存区'; //这里把exports的指向指走

//test.js

var a = require('/utils');
console.log(a) // 打印为 {a : 200} 

由上面的代码我们可知,
1、require导出的内容是module.exports的指向的内存块内容,并不是exports的。
2、exports只是module.exports的引用,辅助module.exports操作内存中的数据。

2、ES中的模块的 导入导出

export和export default的区别:
1、export和export 的发了条均可用于导出常量,函数,文件,模块等
2、在一个文件或模块中,export、import可以有多个,export default仅有一个
3、通过export方式导出,在导入时需要加入{},export default则不需要
4、export能直接导出变量的表达式,export default不行

'use strict'
//导出变量
export const a = '100';  

 //导出方法
export const dogSay = function(){ 
    console.log('wang wang');
}

 //导出方法第二种
function catSay(){
   console.log('miao miao'); 
}
export { catSay };

//export default导出
const m = 100;
export default m; 
//export defult const m = 100;// 这里不能写这种格式。

//index.js
'use strict'
var express = require('express');
var router = express.Router();

import { dogSay, catSay } from './testEs6Export'; //导出了 export 方法 
import m from './testEs6Export';  //导出了 export default 

import * as testModule from './testEs6Export'; //as 集合成对象导出



/* GET home page. */
router.get('/', function(req, res, next) {
  dogSay();
  catSay();
  console.log(m);
  testModule.dogSay();
  console.log(testModule.m); // undefined , 因为  as 导出是 把 零散的 export 聚集在一起作为一个对象,而export default 是导出为 default属性。
  console.log(testModule.default); // 100
  res.send('恭喜你,成功验证');
});

module.exports = router;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值