所谓node
如何安装请往他处。
写在前面
js:脚本语言,需要有一个解析器,浏览器配备了C++编写的V8引擎充当解析器,所以浏览器可以解析js代码。
V8可以高效地转换为机器码,而nodejs就相当于把浏览器中的V8引擎抽出来了。
nodejs是写nginx的作者创造的,和nginx一样,nodejs是一个高性能、异步的服务器,同时,它又易于扩展,不必像nginx那样使用c语言去开发扩展。特点:事件驱动、非阻塞、生态圈很好-有很多开源的npm包供使用。
nodejs的特点:
1. nvm、nodejs、npm、npx 的联系和区别
- nodejs
是一个js的运行环境,一个能编译js代码并运行的环境,在nodejs之前,只有浏览器中的v8引擎可以做这个事情,在nodejs之后,js代码可以在任何有node环境的计算机上运行,由此,可以用js来开发web服务器(所谓的前端人员用于开发后端服务器的工具); - nvm:node version management
类比anaconda,这是一个管理node版本的管理工具:本地安装了若干版本的node之后,可以通过nvm来方便地切换版本从而让不同版本node开发的项目得以运行; - npm:node pakage management
node第三方库的管理工具。如在项目中需要实现一个功能(上传文件etc.),而这个功能的js代码已经有人写好了,此时,就可以通过npm来将这个js文件下载到(本地项目的)lib文件夹中,在需要时通过<script src='path.js>
引用即可,其他功能类似。但是下载下来的各种js文件之间可能存在互相依赖的关系(比如一个功能实际上有若干个js文件),而npm就是为了解决这个问题而存在的(不然直接手动下载就可以了),只要将库文件名告诉npm,npm就自动下载、管理依赖; - npx
npm在下载依赖时,会在项目中建立一个node-modules的文件夹,所有的依赖都会在这个文件夹中,有需要的话就可以进入node-modules文件夹来加载相关命令。而npx命令会先到node-modules文件夹中寻找命令,如果没有则从网上下载下来再使用,然后删掉!这个操作也被称为“无侵入式地下载”。
2. nvm以及node中的各个文件
2.1 nvm安装路径中有一个settings.txt
这个settings设定了:nodejs会被下载到哪里、从哪里下载
- root:nodejs会被下载安装到这个路径下
- node_mirror:nodejs从这里被下载,通常是国内的镜像
- npm_mirror:npm从这里被下载:新版本的nodejs通常安装时会顺序安装一个npm,但是旧版本的不会,需要自己手动
nvm install
一个
2.2 nvm能干啥
nvm就有俩任务:①下载某个版本的nodejs;②切换线性nodejs的版本。
2.3 npm下载的东西在哪
npm install xx:xx会被下载到cmd当前目录中
npm install -g xx:xx会被下载到全局目录中
2.4 全局安装目录
通过npm config set prefix和npm config set cache来设定,这个和npm版本无关,prefix路径对所有nodejs通用。
而具体的配置会在C:\users\user_name.npmcr中,因此,除了上面的命令外,还可以通过手动更改这个文件来配置全局安装目录
2.5 某个版本nodejs的node_modules有什么用
在下载nodejs时新一些的会直接把npm顺带下载,而这个npm就会被顺势下载到被下载nodejs的node_modules中了
2.6 构建nodejs项目
构建nodejs项目有两个内容需要准备:①这个项目对应的js包;②配置文件。
- 包的安装上面已经提到
- 配置文件指的是“package.json”,这个文件可以通过npm init来创建,有了这个json文件,npm下载时就会把更新的内容填上去,也会知道哪些是已经下载了的
如果是从零构建一个项目,建议自己建立一个项目对应的文件夹,在对应的目录下创建配置文件、下载第三方库
2.7 Q&A
我为什么需要多个版本的nodejs?
- 有时候我们是需要两个版本的nodejs,就比如我的项目中需要用到v5.6.0版本的nodejs 但是webpack需要使用最新版本的(这个都是坑出来的,半天没找到原因),这就需要我用到两个版本的nodejs了。https://blog.csdn.net/my_new_way/article/details/104470723
- Node.js 的版本更新非常快,所有有时需要在多个版本之间切换,就需要安装多个版本的 Node.js.
https://www.jianshu.com/p/b82869a76096
全局路径or局部路径?
我的建议是如无必要,请使用局部路径,尤其是当你创建一个新项目而又可能不止需要维护一个项目时,这样可以最大程度避免项目之间依赖版本的冲突
nodejs如此快速的迭代以及全局路径之间的不变难道不会有什么坏处吗
有的,这里就详细分析了nodejs安装路径会引发的实际存在问题
参考链接
node, nvm, npm, npx的区别
npm v.s. npx
nvm的安装和使用
使用nvm管理不同版本的node
npm下载的文件在哪里
settings.txt的配置
node_modules的糟糕之处