前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJs-Lesson1-require和module.exports探究

NodeJs-Lesson1-require和module.exports探究

作者头像
envoke
发布2020-09-17 11:29:37
5360
发布2020-09-17 11:29:37
举报

require和module.exports探究

require和module.exports讲解

代码语言:javascript
复制
遵守开闭原则:对修改关闭,对扩展开放,所以要想使用引入的模块,子模块必须提供module.exports方法。否则只能运行子模块

require

  • 使用方法 var express = require(“express”);//引入系统模块可以直接引入 var test = require("./test.js");引入自己写的模块需要写相对路径或者绝对路径

exports和module.exports探究

  • 导出模块可以使用
代码语言:javascript
复制
	var a = 123;
	var b = 'abc';
	exports.a = a;
	module.exports.b = b;

这里的两种方法都能导出该模块,并且,将该模块导出到一个对象当中 此处你是否有疑问呢?为何两个东西会导出到一个对象当中,还是说这两个对象是同一个对象呢?

代码语言:javascript
复制
	console.log(exports == module.exports):
在这里插入图片描述
在这里插入图片描述

看到这个结果,确实是表示exports和module.exports是同一个对象

那我们再看看另外一种情况呢

代码语言:javascript
复制
	var a = 123;
	bar b = 'abc';
	exports = a;
	module.exports = b;

再另一个js中去引入该模块

代码语言:javascript
复制
	var test = require("./test.js");
在这里插入图片描述
在这里插入图片描述

这里打印的结果为abc;即使我们讲导出的顺序反过来,结果还是一样,这里就不再做示例了。 综上所述:我们可以得出一些结论:

  • exports和module.exports指向的是同一个对象。所以,我们分别再两个上面挂载对象导出时,值再同一个对象里面
  • 当我们再两个对象分别赋值新的对象以后,就只能导出其中一个,是因为我们改变了原来的指向,现在指向两个对象 ,我们只能导出module.exports。所以,刚刚看到的结果都是abc

留一个疑问?为什么exports和require都能直接使用,是全局变量吗?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • require和module.exports探究
  • require和module.exports讲解
    • require
      • exports和module.exports探究
        • 留一个疑问?为什么exports和require都能直接使用,是全局变量吗?
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档