⭐什么是模块化与模块?
将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为模块化。
其中拆分出的每个文件就是一个模块,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用。
⭐什么是模块化项目?
编码时是按照模块一个一个编码的,整个项目就是一个模块化的项目。
⭐模块化好处
下面是模块化的一些好处:
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寻找同名的文件夹,直至找到磁盘根目录。
开发环境是程序员专门用来写代码的环境,一般是指程序员的电脑,开发环境的项目一般程序员自己访问
生产环境是项目代码正式运行的环境,一般是指正式的服务器电脑,生产环境的项目一般由每个客户都可以访问。

可以通过安装选项-g进行全局安装
npm i -g nodemon
该命令的作用是自动重启node应用程序
⭐1.修改windows执行策略
windows默认不允许npm全局命令执行脚本文件,所以需要修改执行策略
以管理员身份打开powershell命令行

键入命令set -ExecutionPolicy remoteSigned
在项目协作中有一个常用的命令就是npm i,通过该命令可以根据package.json和package-lock.json的依赖声明安装项目依赖
npm i
npm install
安装指定版本的包
## 格式
npm i <包名 @ 版本号>
npm i jquery@1.11.2
删除依赖
项目中可能需要删除某些不需要的包
// 局部删除
npm remove uniq
npm r uniq
// 全局删除
npm remove -g nodemon
通过配置命令别名可以更简单的执行命令
配置package.json中的scripts属性:

配置完成之后,可以使用别名执行命令
npm run server
npm run start
不过start别名比较特别,使用时可以省略
npm start
补充说明:
npm start是项目中常用的一个命令,一般用来启动项目
npm run 有自动向上级目录查找的特性,根require函数也一样
对于陌生的项目,我们可以通过查看scripts属性来参考项目的一些操作。
用npm也可以使用淘宝镜像,配置的方式有两种
npm config set registry https://registry.npmmirror.com/
⭐工具配置
使用nrm配置npm的镜像地址npm registry manager
1.安装nrm
npm i -g nrm
2.修改镜像
nrm use taobao
3.检查是否配置成功
npm config list
检查registry地址是否为https://registry.npmmirror.com/,如果是则成功。
cnpm是一个淘宝构建的npmjs.com的完整镜像,也称为[淘宝镜像],网址https://npmmirror.com/。
cnpm服务器部署在国内阿里服务器上,可以提高包的下载速度。
官方也提供了一个全局工具包cnpm,操作命令与npm大体相同。
npm install -g cnpm --registry=https://registry.npmmirror.com
| 功能 | 命令 |
|---|---|
| 初始化 | cnpm init/cnpm init |
| 安装包 | cnpm i uniq |
| 安装项目依赖 | cnpm i |
| 删除 | cnpm r uniq |
yarn是由Facebook在2016推出的新的JS包管理工具,官方网址:https://yarnpkg.com/

我们可以使用npm安装yarn
npm i -g yarn

yarn config set registry https://registry.npmmirror.com/
可以通过yarn config list查看yarn的配置项
我们可以将自己开发的工具包发布到npm服务上,方便自己和其他开发者使用:

后续可以对自己发布的包进行更新:

执行如下命令:
npm unpublish


除了编程语言领域有包管理工具以外,操作系统层面也存在包管理工具,不过这个包指的是软件包

nvm是用来管理node版本的工具,方便切换不同版本的node
使用:
nvm使用与npm差不多,下载地址https://github.com/coreybutler/nvm-windows/releases
