包和NPM
包
包的概念
- 包是在模块基础上更深一步的抽象
- 包的作用:方便分发和推广基于 CommonJS 规范实现的 应用程序或类库;
包和模块的关系
- 在node.js中,可以通过包来对一组具有相互依赖关系的模块进行统一管理,通过包的使用,可以将某个独立的功能封装起来。
如图所示,一个包通常包括一组相互依赖的模块,并提供一个出口模块,外部的模块通过出口模块,使用包的功能。
包的目录结构
规范的包结构 | 作用 |
---|---|
package.json(必须) | 在顶层目录的包描述文件,说明文件 |
bin(可有可无,根据package来决定) | 存放可执行二进制文件 |
lib(可有可无,根据package来决定) | 存放JavaScript文件 |
doc(无关紧要) | 存放文档 |
text(无关紧要) | 存放测试用例的代码 |
注意
-
包都要以一个单独的目录而存在;
-
package.json 必须在包的顶层目录下;
-
package.json 必须包含如下三个属性。
1. name: 包的名字 2. version: 包的版本号 3. main: 表示包的入口文件
-
二进制文件应该在bin目录下;
-
javaScript代码应该在lib目录下;
-
文档应该在doc目录下;
-
单元测试应该在test目录下;
-
Node.js对包要求并没有那么严格,只要顶层目录下有package.json,并符合基本规范即可;
package.json文件属性说明
文件包含名称 | 作用 |
---|---|
name | 包的名称 |
description | 包的简介 |
version | 包的版本号 |
keywords | 关键词数组,用于在NPM中分类搜索 |
author | 作者 |
main | 配置包的入口,默认是index.js |
dependencies | 包的依赖,npm自动根据依赖加载包 |
scripts | 指定运行脚本命令的NPM命令行缩写,如start |
NPM
概念
NPM的全称是Node.js package manage,在Node.js中有两种含义:
- Node.js的开放模块登记和管理系统,是一个NPM网站。
- Node.js的包管理工具,一个命令行软件,用于快速的安装和管理模块。
常用命令
NPM的实用场景
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
NPM安装
随node安装而安装,一同安装的还有NPX
- 查看版本号,在cmd中
npm -v
NPX
- 作用:主要作用是简化执行node命令行工具(包命令)。
注意
- 一般情况下,一个node命令行工具(如cnpm、webpack等),需要先下载,然后配置环境变量,才能使用。如果不配置环境变量,需要加上它的目录才能使用,使用npx可以简化node命令行工具的使用。
应用场景:
-
在没有安装命令行工具的情况下,可以使用npx来运行,例如,如果没有安装cnpm,可以直接如下使用cnpm:
npx cnpm -v
npx会先下载再执行。
-
在没有全局安装命令行工具的情况下,如果是局部安装:
npx cnpm -v,
npx会先在本地目录node_modules下的.bin下,找到相应的命令并执行。
npm安装包
- 在cmd中直接安装markdown:
npx install markdown
会安装在node的安装目录为全局使用
- 在包目录下执行安装会在本目录的最顶层为本文件夹下的文件提供使用
为自己的包创建package.json文件
在包文件夹下
npm init -y
自动生成jackage.json文件
- 包的使用
var mm = require('mm')
cnpm的介绍及使用
介绍
国内的npm镜像
安装淘宝镜像
npm install cnpm -g --registry=https://registry.npm.taobao.org
安装完成后查看版本
cnpm -v
>>>
cnpm@6.1.1 (C:\Users\17567\AppData\Roaming\npm\node_modules\cnpm\lib\parse_argv.js)
npm@6.14.3 (C:\Users\17567\AppData\Roaming\npm\node_modules\cnpm\node_modules\npm\lib\npm.js)
node@12.16.1 (E:\BigSchool\Nodejs\node.exe)
npminstall@3.27.0 (C:\Users\17567\AppData\Roaming\npm\node_modules\cnpm\node_modules\npminstall\lib\index.js)
prefix=C:\Users\17567\AppData\Roaming\npm
win32 x64 10.0.18362
registry=https://r.npm.taobao.org
安装包命令与npm相同
异步编程
异步概念
console.log("1");
console.log("2");
function fun1(){
setTimeout(function(){
console.log("3")
},1000)
console.log("4")
};
console.log("5");
fun1();
console.log("6")
先输出函数中后跳出函数,当计时器到时间时,执行计时器函数。