Module 模块
-
模块化是NodeJS的核心思想之一
-
Node允许我们在一个js文件里引入另外的js文件
-
模块: 本质上就是一个文件, 大部分是js文件. 也可以是json文件
实现原理: nodeJS的模块化遵循的是CommonJS规范
CommonJS 规定了JS模块所需的语法规则
- require() 作用: 引入其他模块
- exports 对象, 作用: 作为当前模块的唯一出口对象
-
当引入自定义的模块时, 路径以./开头, 而且系统会帮助我们省略后缀
const stu = require("./student");
exports 对象
-
exports对象, 作为当前模块的唯一出口对象
-
node为每个js文件, 都内置了一个exports对象, 当该文件被require时, 本质上得到的一定是这个文件里内置的exports对象
let name = "张三";
let age = 20;
function sayHi() {
console.log("你好");
}
exports.name = name;
exports.age = age;
exports.sayHi = sayHi;
module.exports.name = name;
module.exports.age = age;
module.exports.sayHi = sayHi;
exports = {
name:name,
age:age,
sayHi:sayHi
}
module.exports = {
name,
age,
sayHi
}
-
exports 和 module.exports 的区别
- exports是对module.exports的引用 exports = module.exports = {};
- 在外界require时, 真正引入的是module.exports对象而不是exports是对module.exports的引用 exports = module.exports = {};exports对象
Package 包
-
引入包的原因
模块本质上是一个文件, 如果我们将来在需要一个模块的时候, 该模块比较复杂, A模块里引入B模块, B模块里引入了C模块, C模块需要引入D模块, 一般我们会把这次个文件都放到一个文件夹里。
如果我们所需要的模块是一个文件夹时, 我们在引入的时候该如何引入呢??? 直接require文件夹的名字吗??? 如果直接引入文件夹的名字, 系统怎么知道该去获取文件夹里哪个js文件的exports对象呢???
针对此问题,引入了node包的概念。
-
包的本质
本质上是一个文件夹, 一个包(文件夹)里可以包含多个模块(文件). 其实我们将来在引入一些第三方的插件时, 大部分的插件都是以一个文件夹的形式存在的, 所以我们引入的都是包
commonJS 规定, 如果自定义一个包, 需要保证, 每个包里有一个package.json文件, 该文件里是对当前包的一些配置信息, 而将来在引入该包时, node就会根据package.json文件去识别包里的模块, 进而引入对应的exports对象.
node允许我们通过交互式的方式 创建package.json文件, 不需要我们手动创建和书写
步骤:
- 通过命令行 来到包对应的路径下
- 命令: npm init(交互式) 或者 npm init -y(快速但所有都是默认值)
默认情况下 在引入包时, 系统会为我们引入模块名为index的模块的exports对象
-
npm
node package manager 包管理器 负责对第三方的包进行管理
可以让我们快速方便的下载第三方包, 并根据对应的依赖关系 自动下载所需的依赖
注意: node和npm不是绑定的
通过npm 管理第三方的包:
-
下载
npm install(i) 插件名 安装某个插件
npm install(i) 根据依赖,重装所有插件
npm install(i) 插件1 插件2 插件3 … 一次安装多个插件
npm install(i) 插件 --save 生产环境所需要的依赖
npm install(i) 插件 --save-dev 开发环境所需要的依赖
npm install(i) 插件@版本号
-
移除
npm uninstall(uni) 插件名
-
查看包信息
npm view 插件名
-
查看包的最新版本
npm view 插件名 version
-
查看包在当前项目的版本
npm list 插件名 version
-
本文介绍了Node.js中的模块化概念,包括Module模块、exports对象和Package包。模块是NodeJS的核心,遵循CommonJS规范,使用require()引入模块,exports对象作为模块的出口。同时,文章讨论了exports和module.exports的区别。此外,还阐述了包的引入原因,包本质上是包含多个模块的文件夹,通过package.json文件来管理和识别包内的模块。最后,简要介绍了npm包管理器的功能,如下载、移除和查看包信息。
397

被折叠的 条评论
为什么被折叠?



