node的 nrm + nvm + npm + yarn + npx
一源葫、mvn node版本管理:
- 用node的都知道, 不能項(xiàng)目所依賴的node版本會(huì)不一樣, 但是原始切換版本很麻煩,需要去手動(dòng)改
環(huán)境變量
- 所以有個(gè)node版本的切換器,會(huì)很方便, mvn就是這樣一個(gè)工具
- 本人淺顯猜測(cè)原理和git原理一樣, 只是單純管理node版本
安裝nvm前
- 將node卸載干凈,包括環(huán)境變量path的配置
安裝直接去官網(wǎng)下載即可 ==> mvn下載頁(yè)window.zip版本
- 有多個(gè)版本,我選的.zip的壓縮文件
- 解壓后和常規(guī)程序安裝類似,但需注意nodejs安裝保存路徑
安裝完成 會(huì)自動(dòng)配置環(huán)境變量
接下來,安裝nodo
* nvm install <node-vision>
* 新安裝的node版本建議`立即使用`(并且安裝時(shí),有提示),防止bug
nvm use <newNode-vision>
* 查看版本是否切換上成功
1. node -v 顯示當(dāng)前版本
2. nvm ls 顯示nvm管理的版本,在當(dāng)前版本前有`*`標(biāo)記
* 新手常規(guī)`BUG`: 明明node -v 是切換成功的版本,但是nvm ls且沒有`*`標(biāo)記
處理: 卸載重來,可能原因就是上面`安裝新版本,沒有立即使用`(若有知真正原理的callme)
node版本切換
* nvm use <changeNode-vision>
查看node版本是否nvm管理上
* nvm ls
會(huì)顯示所有安裝的node版本,在當(dāng)前使用版本前有 `*` 標(biāo)記
二、npm 安裝與使用
更改npm 下載地址: npm config set registry https://registry.npm.taobao.org
更改全局緩存: npm config set cache "D:\Program Files\Nodejs\node_global" (系統(tǒng)環(huán)境變量需要一致,不然找不到包命令)
更改全局包保存地址: npm config set prefix "D:\Program Files\Nodejs\node_cache"
1.命令行窗口(小黑屏)鸵贬、CMD窗口祷嘶、終端屎媳、shell
- 開始菜單 --> 運(yùn)行 --> CMD --> 回車
- 常用的指令:
tree 文檔結(jié)構(gòu)樹狀顯示
cls 清空屏幕
D: 直接輸入 字母加 :進(jìn)入字母對(duì)應(yīng)磁盤
dir 列出當(dāng)前目錄下的所有文件
cd 目錄名 進(jìn)入到指定的目錄
md 目錄名 創(chuàng)建一個(gè)文件夾
md d:\test\my d盤下新建文件夾
rd 目錄名 刪除一個(gè)文件夾(需要是空文件夾)
del a.txt 刪除a.txt的文件
del *.txt 刪除所有后綴為.txt的文件
cd.>cc.txt 新建cc.txt文件
rd /s D:\test 刪除D盤里的test文件夾 會(huì)出現(xiàn)如下 test, 是否確認(rèn)(Y/N)? 直接輸入 Y 在回車
rd test/s 刪除此文件夾下的所有文件 test, 是否確認(rèn)(Y/N)? 直接輸入 Y 在回車
- 目錄
. 表示當(dāng)前目錄
.. 表示上一級(jí)目錄
- 環(huán)境變量(windows系統(tǒng)中變量)
path
C:\work\jdk\jdk1.7.0_75/bin;
%CATALINA_HOME%/bin;
C:\work\soft\tools\AppServ\Apache24\bin;
C:\work\soft\tools\AppServ\php5;
C:\Users\lilichao\AppData\Local\Programs\Fiddler;
C:\work\environment\Egret\Egret Wing 3\bin;
C:\Users\lilichao\AppData\Roaming\npm;
C:\Program Files\MongoDB\Server\3.2\bin;
C:\Users\lilichao\Desktop\hello
- 當(dāng)我們?cè)诿钚写翱诖蜷_一個(gè)文件夺溢,或調(diào)用一個(gè)程序時(shí),
系統(tǒng)會(huì)首先在當(dāng)前目錄下尋找文件程序烛谊,如果找到了則直接打開
如果沒有找到則會(huì)依次到環(huán)境變量path的路徑中尋找风响,直到找到為止
如果沒找到則報(bào)錯(cuò)
- 所以我們可以將一些經(jīng)常需要訪問的程序和文件的路徑添加到path中,
這樣我們就可以在任意位置來訪問這些文件和程序了
I/O (Input/Output)
- I/O操作指的是對(duì)磁盤的讀寫操作
Node
- Node是對(duì)ES標(biāo)準(zhǔn)一個(gè)實(shí)現(xiàn)丹禀,Node也是一個(gè)JS引擎
- 通過Node可以使js代碼在服務(wù)器端執(zhí)行
- Node僅僅對(duì)ES標(biāo)準(zhǔn)進(jìn)行了實(shí)現(xiàn)状勤,所以在Node中不包含DOM 和 BOM
- Node中可以使用所有的內(nèi)建對(duì)象
String Number Boolean Math Date RegExp Function Object Array
而BOM和DOM都不能使用
但是可以使用 console 也可以使用定時(shí)器(setTimeout() setInterval())
- Node可以在后臺(tái)來編寫服務(wù)器
Node編寫服務(wù)器都是單線程的服務(wù)器
- 進(jìn)程
- 進(jìn)程就是一個(gè)一個(gè)的工作計(jì)劃(工廠中的車間)
- 線程
- 線程是計(jì)算機(jī)最小的運(yùn)算單位(工廠中的工人)
線程是干活的
- 傳統(tǒng)的服務(wù)器都是多線程的
- 每進(jìn)來一個(gè)請(qǐng)求,就創(chuàng)建一個(gè)線程去處理請(qǐng)求
- Node的服務(wù)器單線程的
- Node處理請(qǐng)求時(shí)是單線程湃崩,但是在后臺(tái)擁有一個(gè)I/O線程池
?
node.js
- node是一款對(duì)ES標(biāo)準(zhǔn)實(shí)現(xiàn)的JS引擎
- 通過node可以使js在服務(wù)器中運(yùn)行
- node就是一款使用js編寫的web服務(wù)器
- node底層是使用c++的編寫的
- node的中js引擎使用的chrome的v8引擎
- node的特點(diǎn):
1.非阻塞荧降、異步的I/O
2.事件和回調(diào)函數(shù)
3.單線程(主線程單線程,后臺(tái)I/O線程池)
4.跨平臺(tái)
- 模塊化
- ES5中沒有原生支持模塊化攒读,我們只能通過script標(biāo)簽引入js文件來實(shí)現(xiàn)模塊化
- 在node中為了對(duì)模塊管理,引入了CommonJS規(guī)范
- 模塊的引用
- 使用 require()函數(shù)來引入一個(gè)模塊
- 例子:
var 變量 = require("模塊的標(biāo)識(shí)");
- 模塊的定義
- 在node中一個(gè)js文件就是一個(gè)模塊
- 默認(rèn)情況下在js文件中編寫的內(nèi)容辛友,都是運(yùn)行在一個(gè)獨(dú)立的函數(shù)中薄扁,
外部的模塊無法訪問
- 導(dǎo)出變量和函數(shù)
- 使用 exports
- 例子:
exports.屬性 = 屬性值;
exports.方法 = 函數(shù);
- 使用module.exports
- 例子:
module.exports.屬性 = 屬性值;
module.exports.方法 = 函數(shù);
module.exports = {};
- 模塊的標(biāo)識(shí)
- 模塊的標(biāo)識(shí)就是模塊的名字或路徑
我們node通過模塊的標(biāo)識(shí)來尋找模塊的
對(duì)于核心模塊(npm中下載的模塊),直接使用模塊的名字對(duì)其進(jìn)行引入
var fs = require("fs");
var express = require("express");
對(duì)于自定義的文件模塊废累,需要通過文件的路徑來對(duì)模塊進(jìn)行引入
路徑可以是絕對(duì)路徑邓梅,如果是相對(duì)路徑必須以./或 ../開頭
var router = require("./router");
?
- npm的命令
- npm -v 查看npm的版本
- npm version 查看所有模塊的版本
- npm search 包名 搜索包
- npm install / i 包名 安裝包
- npm remove / r 包名 刪除包
- npm install 包名 --save 安裝包并添加到依賴中 *****
- npm install 下載當(dāng)前項(xiàng)目所依賴的包
- npm install 包名 -g 全局安裝包(全局安裝的包一般都是一些工具)
- npx xxx 運(yùn)行本地包,沒有將直接安裝,運(yùn)行(但是不會(huì)修改package.json),安裝后磁盤找不到,有可能存內(nèi)存,關(guān)機(jī)后會(huì)清除;
- npm list -g --depth 0 查看全局安裝過的包命令
npm list 顯示當(dāng)前安裝過的包
-g 指全局安裝過的包
--depth 0 限制輸出模塊層級(jí)
- npm list hexo-deployer-git 后直接跟插件名,查看是否有某插件
?
-------------查找
- npm root -g 查看全局包所在的文件夾路徑
- npm uninstall --global xxx 全局卸載
?
?
node
- 包(package)
- 將多個(gè)模塊組合為一個(gè)完整的功能,就是一個(gè)包
- 包結(jié)構(gòu)
bin
- 二進(jìn)制的可執(zhí)行文件邑滨,一般都是一些工具包中才有
lib
- js文件
doc
- 文檔
test
- 測(cè)試代碼
package.json
- 包的描述文件
- package.json
- 它是一個(gè)json格式的文件日缨,在它里面保存了包各種相關(guān)的信息
name 包名
version 版本
dependencies 依賴
main 包的主要的文件
bin 可執(zhí)行文件
/npx 和 npm腳本?/
- npm(Node Package Manager node的包管理器)
- 通過npm可以對(duì)node中的包進(jìn)行上傳、下載掖看、搜索等操作
- npm會(huì)在安裝完node以后匣距,自動(dòng)安裝
- npm的常用指令
npm -v 查看npm的版本
npm version 查看所有模塊的版本
npm init 初始化項(xiàng)目(創(chuàng)建package.json)
npm i/install 包名 安裝指定的包
npm i/install 包名 --save 安裝指定的包并添加依賴 == npm i module_name -S
npm i/install 包名 --save-dev 本地工具依賴 == npm i module_name -D
npm i/install 包名 -g 全局安裝(一般都是一些工具)
npm i/install 安裝當(dāng)前項(xiàng)目所依賴的包
npm s/search 包名 搜索包
npm r/remove 包名 刪除一個(gè)包
npm uninstall -g <package>
npm update <name>更新
npm ls 列出當(dāng)前安裝的了所有包
npm root 查看當(dāng)前包(本地包)的安裝路徑
npm root -g 查看全局的包的安裝路徑
npm help 幫助,如果要單獨(dú)查看install命令的幫助哎壳,可以使用的npm help install
npx 臨時(shí)安裝可執(zhí)行依賴包毅待,不用全局安裝,不用擔(dān)心長(zhǎng)期的污染(當(dāng)pakage.json中有npm腳本配置時(shí),可以只本地安裝工具依賴)
npm update常用命令使用
一归榕、更新
1. npm-check檢查更新
npm install -g npm-check
npm-check
2. npm-upgrade更新
npm install -g npm-upgrade
npm-upgrade
3. 更新全局包:
npm update <name> -g
4. 更新生產(chǎn)環(huán)境依賴包:
npm update <name> --save
5. 更新開發(fā)環(huán)境依賴包:
npm update <name> --save-dev
三尸红、yarn 安裝與使用
- 安裝yarn
npm i yarn -g --verbose
- 更換安裝源地址
yarn config get registry // 查詢當(dāng)前
yarn config set registry https://registry.npm.taobao.org // 設(shè)置新
yarn config get cache // 查詢當(dāng)前
yarn config set cache "D:\Program Files\Nodejs\node_cache" // 設(shè)置新,默認(rèn)和npm相同,就不用改(保持一致最好)
常用指令
- yarn / yarn install 等同于npm install 批量安裝依賴
- yarn add xxx 等同于 npm install xxx —save 安裝指定包到指定位置
- yarn remove xxx 等同于 npm uninstall xxx —save 卸載指定包
- yarn add xxx —dev 等同于 npm install xxx —save-dev
- yarn upgrade 等同于 npm update 升級(jí)全部包
- yarn global add xxx 等同于 npm install xxx -g 全局安裝指定包
node版本升級(jí)
- npm install -g n // npm install -g n --force
- nvm stable 升級(jí)到穩(wěn)定版
rimraf粉碎文件(立即刪除文件夾)
- 全局安裝工具 rimraf 依賴 (npm install rimraf -g)得到全局粉碎文件夾的命令
- rimraf 文件夾名(node_modules)
四、nrm 鏡像管理:
- nrm(npm registry manager )是npm的鏡像源管理工具
安裝:
$ npm install -g nrm
使用:
$ nrm use taobao
查看可用的源:
$ nrm ls
增加源:
$ nrm add registryName <url>
測(cè)試源碼下載速度:
$ nrm test taobao