node介绍和安装
1、node介紹
???Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境。?
? ? Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。?
? ? Node.js 的包管理器 npm,是全球最大的開源庫生態系統。
2、nodejs安裝
官方下載msi安裝包,如:node-v12.8.0-x64.msi
MSI(Microsoft installer)文件是Windows installer的數據包,它實際上是一個數據庫,包含安裝一種產品所需要的信息和在很多安裝情形下安裝(和卸載)程序所需的指令和數據。MSI文件將程序的組成文件與功能關聯起來。此外,它還包含有關安裝過程本身的信息:如安裝序列、目標文件夾路徑、系統依賴項、安裝選項和控制安裝過程的屬性。
安裝步驟如下:
1、下載node安裝包
在官網找對應的版本進行下載以往的版本 | Node.js
2、我以12.8.0為例
3、下載下來后雙擊進行安裝
4、安裝完成后,打開cmd命令窗口,輸入node -v就可以看到版本信息
?5、查看npm版本,npm -v
3、npm介紹
? NPM,Node Package Manager,是隨同NodeJS一起安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。
4、npm安裝
執行node包msi安裝成功后,npm已經集成在node包中并一并安裝
? ? 檢驗是否安裝成功:win+r,輸入cmd回車,進入Windows命令窗口,輸入npm -v,出現版本信息即安裝成功
5、npm配置
在node主目錄下配置 全局模塊 安裝路徑:npm config set prefix D:\develop\nodejs\node_global
? ? 在node主目錄下配置 cache緩存 路徑:npm config set cache D:\develop\nodejs\node_cache
?配置 全局模塊 環境變量:我的電腦-屬性-高級系統設置-高級-環境變量,進入環境變量對話框。
? ①:在系統變量下新建"NODE_PATH",“D:\develop\nodejs\node_global\node_modules\”,這種方法用來指定NODE_PATH環境變量,并且用 ; 分割多個不同的目錄(引申:NODE_PATH 是 NODE 中用來 尋找模塊所提供的路徑注冊環境變量 ,NODE_PATH 實現 多個項目 模塊復用 的最佳實踐方案。node 的包加載機制,從項目的根位置遞歸搜尋 ?node_modules 目錄,直到文件系統根目錄的 ?node_modules ,如果還沒有查找到指定模塊的話,就會去 NODE_PATH中注冊的路徑中查找 。基于 nodejs 的包加載路徑搜索算法,我們可以 采用全局安裝的方式,將我們的包安裝到全局,這樣,多個項目可以共享全局中的依賴包。)
? ? 檢查 NODE_PATH 是否配置成功:win+r,輸入cmd回車,進入Windows命令窗口,執行npm install express -g,安裝express模塊成功后,輸入node,進入node的REPL環境,輸入require('express'),如果出現express模塊相關信息即配置成功
? ? ②:在用戶變量"PATH"末尾追加,“D:\develop\nodejs\node_global\”(引申:操作系統 PATH 環境變量作用,當系統調用一個命令的時候,就會在PATH變量中注冊的路徑中尋找,如果注冊的路徑中有就調用,否則提示命令沒找到,“xxx不是內部或外部命令,也不是可運行的程序或批處理文件”,原因是沒有配環境變量PATH)
? ? 檢查 PATH 是否配置成功:win+r,輸入cmd回車,進入Windows命令窗口,對于已經安裝成功的模塊,執行相應的命令,如:npm、cnpm、vue、webpack,出現相關輸出信息即配置成功
? ? 重置npm模塊的注冊、管理、發布地址為cnpm:
?修改npm包管理器的registry為淘寶鏡像,npm config set registry https://registry.npm.taobao.org(官方地址為registry.npmjs.org)
? ? 重置設置代理:npm config set proxy http://server:port
?
6、問題一:不同項目對于同一模塊的依賴版本不同的解決方案
如 ABC 項目使用了babel的1.x版本,項目 DEF 使用了 babel的2.x版本x版本,可以將 NODE_PATH 指定的位置中存放babel的高版本2.x版本,再將項目ABC的 node_modules 目錄中放置低版本 1.x 版本。這樣就解決了模塊版本的差異性,因此,在實際開發中,模塊存放路徑的兩種方式可以結合使用和配置。
?
7、npm常用命令
配置:
npm config;管理npm的配置路徑
npm config ls -l;查看配置詳情信息
npm config get prefix;查看全局模塊安裝路徑,prefix 字段就是全局 base path
npm config set prefix D:\develop\nodejs\node_global;重置全局模塊安裝路徑
npm config set cache D:\develop\nodejs\node_cache;重置全局模塊緩存路徑
- 查看模塊相關信息:
npm root;查看當前項目包(模塊)的安裝路徑
npm root -g;查看系統中node全局包(模塊)的安裝路徑
npm ls/list/la/li;查看當前路徑下安裝的模塊
npm ls -g;查看全局安裝的模塊
npm init;在項目中引導創建一個package.json文件,安裝包的信息可保持到項目的package.json文件中,以便后續的其它的項目開發或者他人合作使用。
npm help;查看某條命令的詳細幫助
npm help install;系統在默認的瀏覽器或者默認的編輯器中打開本地nodejs安裝包的文件(/nodejs/node_modules/npm/html/doc/cli/npm-install.html)
npm packageName -v;查看本地是否安裝過某個包
npm list;查看當前目錄下的包
npm list -g;查看全局目錄下的包
- 模塊安裝,以express模塊為例:
npm install;在項目根路徑下執行該命令,會在項目根路徑下的 node_modules 中安裝配置在 package.json 中的所有依賴包
npm install express;安裝express包在命令窗口的當前目錄下,默認安裝最新版本,并將信息保持到項目的package.json文件中
npm install express@3.2.0;安裝express包的3.2.0版本在命令窗口的當前目錄下,并將信息保持到項目的package.json文件中
npm install express --global/-g;安裝express模塊在全局目錄下
npm install express --save/-S;安裝包加入到生產階段的依賴,package.json文件的dependencies字段內容增加
npm install express --save-dev/-D;安裝包加入到開發階段的依賴,package.json文件的devDependencies字段內容增加
npm install express --save-optional/-O;安裝包加入到可選階段的依賴,package.json文件的optionalDependencies 字段內容增加
8、npm構建項目
例如,構建一個基于 webpack 模板的vue項目:
$ npm instll vue;
$ npm install --global vue-cli;vue的命令行工具
$ vue init webpack demo;核心命令
$ cd demo
$ npm instll;安裝所有依賴包
$ npm run dev;運行開發階段的項目
? ? 例如,構建
$ npm install -g react-native-cli;React Native的命令行工具
$ react-native init demo;核心命令
$ cd demo
$ react-native run-android;運行android平臺的項目
? ? package.json文件可以手工編寫,也可以使用npm init命令自動生成。npm 的 init 命令之后,會在工程目錄文件夾的根目錄生成 package.json 文件,該JSON文件字段詳解:
npm將該整個工程項目定義為一個 package(包),該文件定義了項目所需要的模塊和配置信息,npm install 后,項目根據這個文件的配置字段下載需要的模塊 以及 配置需要的運行和開發環境。
"name": "demo01",//項目名字
"version": "0.0.1",//項目版本號,大版本.次要版本.小版本
"author": "wan",//
"description": "The first react-native demo",//
"keywords": ["react-native","javascript"],//
"repository": {undefined
"type": "git",
"url": "https://path/to/url"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
"contributors":[{"name":"李四","email":"lisi@example.com"}],
"private": true,//
"scripts": {undefined//
? ? "start": "node node_modules/react-native/local-cli/cli.js start",
? ? "test": "jest"
},
//dependencies 和 devDependencies 字段都指向一個對象。該對象的各個成員,分別由模塊名和對應的版本要求組成,表示依賴的模塊及其版本范圍。
"dependencies": {undefined//指定了項目運行所依賴的模塊
? ? "react": "16.0.0-alpha.6",
? ? "react-native": "0.44.3",
? ? "react-native-deprecated-custom-components": "^0.1.0"
},
"devDependencies": {undefined//指定項目開發所需要的模塊。
? ? "babel-jest": "20.0.3",
? ? "babel-preset-react-native": "1.9.2",
? ? "jest": "20.0.4",
? ? "react-test-renderer": "16.0.0-alpha.6"
},
"jest": {undefined//
? ? "preset": "react-native"
}
?
總結
- 上一篇: 微信小程序—封装消息提示框wx.show
- 下一篇: Nginx基本命令