JavaScript CommonJS

CommonJS


系列文章

这是JavaScript系列文章:



简介

  1. 输出
    在Node中,每个js文件都相当于一个独立的‘’,域外和域内互不干涉,但是我们想要访问属于域内的变量或者函数,就需要人为添加标识暴露出来。
    这个标识:
    module 当前模块,对象类型
    exports 是module的属性,是实际对外的接口 module.exports
    module.export = app => {}
  2. Node中引用某个模块
    const example = require('./example.js');
  3. CommonJS特点
    1. 仅在模块作用域内有效
    2. 多次加载的模块仅加载一次,并缓存,之后会从缓存读取模块
    3. 模块加载顺序和引用顺序相对应

module

module对象

属性对象说明
idString模块标识符,绝对路径模块名
filenameString模块文件名,带有绝对路径
loaderBoolean模块是否已经完成加载
parentObject调用此模块的模块
chilerenArray该模块调用的其他模块
exports-对外输出的变量或者函数

module.exports

module.exports 其实就像对接口,其他模块实际调用的就是这个 module.exports 变量

exports

  1. exports 本质上是Node实现的 module.exports 的简写模式: var exports = module.exports;

  2. 因此,不能直接将某个值赋值给 exports
    错误示例:

    exports = function(x) {console.log(x)};
    
  3. 只给 module.exports 赋单一值时,就意味着 exports 不会再起作用
    module.exports = function (x) { console.log(x);};

  4. 为了避免混淆,最好的办法是放弃 exports

require

require用于加载模块文件,若未读取到指定模块则会报错

调用自身

// initial.js 文件
module.exports = function () {
	console.log('立刻执行该函数');
}

require('./initial.js')();  // 立即执行: "立刻执行该函数"

加载路径

require 加载的文件默认会添加 ‘.js’,
所以说:const test = require('./test'); = const test = require('./test.js');

开头路径说明示例代码加载结果
/绝对路径require('/app/test.js')/app/test.js
./相对路径,相对于当前执行js的文件的同层文件路径require('./test.js')同层test.js
-默认提供的是核心模块,或者node_module内的模块require('./test.js')同层test.js
- 路径先找到路径首文件,在以此为基础查找require('app/test.js')先找到app文件夹,在此基础上找test.js
-若上面都未查找到,则会在未添加后缀的引用尝试添加其他后缀(.js/.json/.node)继续查找--

文件夹下加载规则

加载规则

参考链接

[1] 阮一峰, CommonJS规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值