Npm笔记
Nodejs和Npm的关系
名词解释
Chrome v8
Chrome提供的能把js语言编译成系统能够识别的语言的第八个版本;当然别的厂商也有不同的js编译器
Chrome v8功能
Chrome v8 能够独立运行,所以Node.js可以基于v8生成自己的运行环境;也可以在浏览器中进行js解析,因为Chrome v8 开源发展快,所以Chrome 对es6等新技术支持比较快;
Npm是什么
Npm 全称是 Node Package Manager 包管理工具
当一个网站依赖的js代码越来越多,程序员发现这是一件很麻烦的事情:
去 Jquery 官网下载 Jquery
去 BootStrap 官网下载 BootStrap
去 Underscore 官网下载 Underscore
……
有些程序员就受不鸟了,于是Npm就出来了,全称是 Node Package Manager 包管理工具。
这一点和Maven、Gradle十分相似,只不过Maven、Gradle是用来管理Java Jar包的,而Npm是用来管理Js的。
Npm 的实现思路和Maven、Gradle是一样的:
1、有一个远程代码仓库(registry),在里面存放所有需要被共享的js代码,每个js文件都有自己唯一标识。
2、用户想使用某个js的时候,只需引用对应的标识,js文件会自动下载下来。
Npm的两层含义
- Npm是一个第三方模块的托管网站,指的就是
https://www.npmjs.com/
; - Npm 是Node的包管理工具(全名叫做Node Package Manager),在我们安装Node时候,就已经顺便也安装Npm这个管理工具;
Node.js是什么
Node.js是基于Chrome v8 引擎的js运行环境
Node.js是一个Javascript运行环境(runtime environment),不是一个js文件,实质是对Chrome V8引擎进行了封装。
Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python 等服务端语言平起平坐的脚本语言。
[1]Node.js提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。
[2]Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。
Chrome浏览器和Node.js在解析javascript都使用了v8引擎:
Npm和Node.js的发展
Npm作者已经将Npm开发完成,于是发邮件通知 Jquery、Bootstrap、Underscore 作者,希望他们把 Jquery、bootstrap 、 underscore 放到Npm远程仓库,但是没有收到回应,于是Npm的发展遇到了瓶颈。
Node.js作者也将Node.js开发完成,但是 Node.js 缺少一个包管理器,于是他和 Npm 的作者一拍即合、抱团取暖,最终 Node.js 内置了 Npm。
后来的事情大家都知道,Node.js 火了。随着 Node.js 的火爆,大家开始用 Npm 来共享 JS 代码了,于是 Jquery 作者也将 Jquery 发布到 Npm 了。所以现在,你可以使用 Npm install Jquery 来下载 Jquery 代码。现在用 Npm 来分享代码已经成了前端的标配。
总结
Npm是Node.js 内置的一套包管理工具,比如Jquery什么的,随着Node的火爆发展,Npm越来越庞大,插件越来越多
怎么理解Npm和Node的关系呢,Node.js相当于qq游戏大厅,Npm就是其中的小游戏;
Node.js和Npm的安装
Node.js的安装这里就不再多说了。Npm由于内置在Node.js中,所以就一并安装了。有时候我们只想单独安装Npm,不想安装Node.js,这个好像是不行的。
安装和卸载全局包
- 什么是全局的包:通过
Npm install 包名 -g
方式安装的包,都安装到了全局;一般全局的安装目录是C:\Users\自己的用户文件夹\AppDataRoaming\Npm
- 带大家演示如何安装一个全局的包:
npm install i5ting_toc -g
,注意:这里的-g
表示全局安装包的意思 - 注意:一般,只有一些工具,才有全局安装的必要性
- 如果要全局卸载某个包,比如要卸载
i5ting toc
了,直接运行’npm uniinstall i5ting_toc -g`就可以全局卸载包了!
node/npm如何查看安装过的模块或包
QuickStart
npm ls
命令可以查看安装过的模块,这个命令使用的时候要注意是否为全局和注意层数。
查看当前项目的依赖模块如下:
|
|
查看全局依赖模块命令如下:
|
|
详细介绍
在命令行输入npm ls
,可以查看当前文件夹下安装的模块
这个结果和文件夹下面的node_modules目录是对应的
可以看见,这个文件夹下面的2个子文件夹名字和刚才的输出结果一模一样
但是这个命令会将模块依赖的模块也一并输出出来,最后在一个复杂项目里面的结果会十分庞大
现在我们可以加上 –depth 0,来限制结果的层数
执行
|
|
可以发现复制项目的输出结果也不会太长
加上 -g 可以输出全局模块,也可以和–depth 0并用
执行
|
|
试试