nodejs-module初识

每个文件都视为独立的模块,每个模块都有Module对象

require.main === module 判断该文件是否直接运行,而不是被引用

如何加载模块

exports 模块方法导出对象

require() 引入模块方法(首次引入时会执行一次)

require 引入后的对象就是一个引入文件的exports

注: 1.一个模块能被引用多次,返回的相同的对象,首次引用时将模块运行并加载在缓存中,之后每次引用都是从缓存加载,不再重新运行加载

        2.模块加载时基于解析传入的文件名进行缓存,并且区分大小写


require默认参数形式:

不带后缀:会尝试带着.js、.json、.node拓展名再加载

携带前缀:’/’寻找绝对路径;’./’相对路径,与该文件同目录;’../’核心模块或来自node_modules目录

未加前缀:

             ①核心模块

  ②从当前父级目录开始,尝试在该目录的/node_modules寻找,没找到则移至再父一级尝试,直到文件系统根目录,例:require(‘str.js’);

                  /1/2/3/4/node_modules/str.js

                  /1/2/3/node_modules/str.js

                  /1/2/node_modules/str.js

                  /1/node_modules/str.js

                  /node_modules/str.js

目录:试图加载路径下package.json(需指定一个main模块{”main”:”./lib/main.js”})、index.js、index.node文件

如果给定路径或文件不存在,require()会抛出一个ERROR:cannot find module

exports与module.exports

module.exports对象是由模块系统创建的,而exports是一个快捷方式,是module.exports更简短的引用形式;

exports 变量是在模块的文件级别作用域内有效的,在模块被执行前被赋予module.exports的值。如果将一个新值赋值给exports,exports指向新的内存地址,它不再绑定到module.exports,而是成为一个模块内的普通变量,不再向外导出

    在第7行赋值之前依然有效,

    之后则转变为普通变量

 

 

 

aaaaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值