nodeJS 模块化详解

首先,在Node中,一个JS文件,就是一个模块,这个文件可能是JS、JSON 或者编译过的C/C++ 扩展。

1、引入

通过 require() 函数 引入外部的模块, 参数可以是一个文件的路径地址,这个路径,可以输相对路径,也可以是绝对路径, 注意必须以 ./ (当前) 或 ../ (上一级)开头, 不能使用缩写方式;

举个最简单的栗子:

//m1.js
console.log("I'M m1.js");

//m2.js
require("./m1");     //只要文件名即可,  后缀的.js  可以省略

打开m2.js 实行了m1.js 的代码;

使用 require 引入模块后,该函数会返回一个对象,这个对象代表的就是引入的模块

如图:
在这里插入图片描述

2、导出

在node中,每个模块都是独立的运行在各自的函数中,并不是全局作用域,模块之间的变量及函数在其他模块中无法访问,上面是因为直接一句console.log() 可以直接被输出,但是要是通用其他模块的变量或函数等, 还需要使用 exports 外部模块需要引用什么,就把它设置为 exports 的属性即可;


//m1.js 
exports.a="I'M aaa";
exports.fn=function () {

}


//m2.js
var M2=require("./m1.js");

console.log(M2);


如图:
在这里插入图片描述

3、模块标识

通过 require 函数 引入外部的模块时,使用的就是模块标识,也可以说是模块的名字,就是传递给 require() 的参数

模块主要分为两大类, 核心模块 和 文件模块

核心模块: 是由node引擎提供的模块,核心模块的标识,使用的时候直接就是模块的名字即可
在这里插入图片描述
通过Npm或 cnpm 下载的包都放在node_modules文件夹里,使用时直接通过包名引入即可;
node在使用模块名字来引入模块时,它会首先在当前目录的node_modules中寻找是否含有需要的模块,
如果有,直接使用,没有会继续再上一级目录的node_modules里寻找,直到找到为止,
找寻的目录截至到磁盘的根目录,依然没有的话,就报错;

文件模块: 是由用户自己创建的模块,文件模块的标识,就是文件路径;

在这里插入图片描述

4、其他

node中没有window对象。window是浏览器的规范,并非js语言规范,所以在nodejs当然不能用。
不过nodejs有个类似的全局变量 ->, golgal
在全局创建的变量都被作为golgal 的属性,全局的方法也会作为golgal的方法保存。


在node中,每个模块都是被包装在各自的函数中,我们可以用arguments来检查一下:
(arguments,伪数组对象,可以用 arguments 对象检测函数的参数;)
如图:
在这里插入图片描述

简单解释下:
当node在执行模块中的代码时,它会自动的在代码的首尾处添加图中的代码
顶部:

function (exports, require, module, __filename, __dirname) {

结尾处:

}

中间部分就是我们自己写的代码;

参数的用处简单介绍下:
exports 用来将变量或函数暴露在外部使用
require 引入外部的模块
module 当前模块本身,exports就是module的属性

module.exports==exports ;    //true

//exports只能用 .的方式向外部暴露变量,
exports.a="I'M aaa";
exports.fn=function () {}

//module.exports既可以通过.来赋值,也可以直接赋值
module.exports.aa="I'M aaa1";
//或
module.exports={
    aa:"I'M aaa1",
    fn:function () {
        
    }
}


__filename 当前模块的完整路径
__dirname 当前模块所在文件见的完整路径


nodeJS 中文官网:http://nodejs.cn/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值