⭐什么是模块化与模块?
将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为模块化。
其中拆分出的每个文件就是一个模块,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用。
⭐什么是模块化项目?
编码时是按照模块一个一个编码的,整个项目就是一个模块化的项目。
⭐模块化好处
下面是模块化的一些好处:
1.防止名命冲突
2.高复用性
3.高维护性
新建me.js
function timeo(){
console.log('ing...');
}
// 暴露数据
module.exports = timeo;
在index.js中使用me.js中的函数:
// 导入模块
const timeo = require('./me.js');
// 调用函数
timeo();
模块暴露数据的方式有两种:
1.module.exports = value;
2.exports.name = value;
❗❗❗
module.exports可以暴露任意数据
不能使用exports=value的形式暴露数据,模块内部module与exports的隐式关系exports= module.exports={}
function timeo(){
console.log('ing...');
}
function nie(){
console.log('hello...')
}
// 暴露数据
// module.exports = timeo;
// module.exports = {
// timeo,
// nie
// }
// exports暴露数据
exports.timeo = timeo;
exports.nie = nie;
// module.exports可以暴露任意数据
module.exports = 'i love you';
module.exports = 521;
// 2.不能使用`exports = value`的形式暴露数据
// exports = 'iloveyou'//❌
在模块中使用require传入文件路径即可引入文件
const test = require('./me.js')
require使用的一些注意事项:
介绍require导入自定义模块的基本流程
1.将相对路径转为绝对路径,定位目标文件。
2.缓存检测
3.读取目标代码文件
4.包裹为一个函数并执行(自执行函数),通过arguments.callee.toString()查看自执行函数。
5.缓存模块的值
6.返回module.exports的值
nodule.exports、exports
以及require
这些都是CommonJS
模块化规范中的内容。
而Node.js是实现了CommonJS模块化规范,二者关系有点像JS和ECMAScript.
包是什么?
package,代表一组特定功能的源码集合。
包管理工具
管理包的应用软件,可以对包进行下载安装,更新,删除,上传等操作。
常用的包管理工具
npm,yarn,cnpm
npm是node的官方内置的包管理工具。
npm初始化包
npm init
最后会生成package.json文件
{
"name": "test",
"version": "1.0.0",
"description": "learn npm",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
注意:
1.package name(包名)不能使用中文、大写、默认值是文件夹的名称,所以文件夹名称也不能使用中文和大写
2.version(版本号)要求x.x.x的形式定义,x必须是数字,默认值是1.0.0
3.package.json可以手动创建与修改
4.使用npm init -y或者npm init --yes积极创建package.json
npm搜索包
搜索包的两种方式:
1.命令行[npm s/search 关键词]
2.网站搜索https://www.npmjs.com/
下载安装包
我们可以通过npm install和npm i 命令安装包
npm i uniq
// 1.导入uniq 包
const uniq = require('uniq');
// 2.使用函数
let arr = [1,2,3,4,5,4,3,2,1];
const result = uniq(arr);
console.log(result);
require导入npm包的基本流程
1.在当前文件夹下node_modules中寻找同名的文件夹
2.在上级目录中下的node_modules寻找同名的文件夹,直至找到磁盘根目录。