簡介
- node.js是一個基于chrome V8 引擎的 JavaScript 運作環境。
- node.js使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。
- node.js的包管理器 npm , 是全球最大的開源庫生态系統
安裝
- 官網位址 : http://nodejs.cn
- 檢視是否安裝成功 :
- node -v : 檢視node.js版本
- npm -v : 檢視npm版本
- node -h : 幫助資訊
-
安裝淘寶鏡像 : 位址 : http://npm.taobao.org/
在終端下輸入 : npm install -g cnpm --registry=https://registry.npm.taobao.org
一些指令行的基本操作
- cd 進入目錄
- cd… 傳回上一級
- tab 自動補全内容
- ctrl + c 退出操作
- cls 清屏
- dir 顯示檔案
- mkdir 建立檔案夾
- rmdir 删除檔案夾
- type nul > file.text 建立空檔案
- echo[ content ]>file.text 建立帶内容的檔案
- del flie.text 删除檔案
一些安裝操作
- npm安裝子產品
- 局部安裝 : npm install xxx
- 全局安裝 : npm install xxx -g
- 檢視全局安裝的位置 : npm root -g
- nvm
- node version manage : 對node版本的管理
- nvm ls :檢視版本資訊
- nvm install v(版本号) : 安裝對應版本的nvm
- nvm use(版本号) : 使用該版本nvm
- nrm
- node register manage : 對 npm 下載下傳源的管理
- npm i -g nrm : 安裝
- nrm ls : 檢視
- nrm use : 切換
- node的一些基本操作
- node + 檔案路徑 : 開啟node環境(REPL模式),可直接操作(後置名為.js時,字尾名可以省略)
- cnpm install -g nodemon : 安裝nodemon , 可以實時偵測檔案的變化(相當于VScode的live Server)
浏覽器和node.js
- 浏覽器 : 主要進行DOM操作 , document , window
- node.js : 主要進行計算機底層的操作,資料庫,檔案,系統,程序等。
node.js的子產品
- 内置的node.js子產品 : 就是下載下傳npm之後直接可以使用的子產品,不用下載下傳,通過 require()引入即可。
- url子產品 : url.parse() 會解析一個URL 字元串并傳回一個URL對象。第二個參數布爾值true,對query屬性解析成對象 。 url.format() : 傳回一個urlObject格式化後的URL字元串。方法是parse()方法的相反操作。
- querystring子產品 : 提供用于解析和格式化URL查詢字元串的實用工具。parse():對query的串聯字元串進行對象的解析。stringify():parse()的相反操作
//url : 處理 url 位址 , web項目 請求 -> 請求url -> 後端就要處理
var url = require('url');
var querystring = require('querystring');
var str = 'http://www.baidu.com/goods/detail.php?id=1&type=phone#abc';
var result = url.parse(str,true); //對url進行解析的,傳回一個對象,第二個參數:可以把 字元串格式化參數 -> 對象形式的資料
- path : 處理檔案路徑
- path.join() : 連接配接路徑
- path.parse() : 方法可以傳回路徑各部分的資訊。
- path.relative() : 接受兩個路徑作為參數 。 基于目前工作目錄,傳回從第一個路徑到第二個路徑的相對路徑。
- pth.resolve() : 把一個相對位址轉成一個絕對位址
var path = require('path');
const { fileURLToPath } = require('url');
//想拼接兩個路徑。
console.log( path.join( 'd:\\a\\b' , 'file.txt') );
//__dirname : 目前這個node檔案的根目錄
//__filename : 目前這個node檔案的絕對位址
console.log( path.join( __dirname , 'file.txt') );
//path.parse() : 把路徑轉成各種資訊
console.log( path.parse(__filename) );
console.log( path.relative('d:\\a\\b' , 'd:\\a\\b\\file.txt') ); // file.txt
console.log( path.relative('d:\\a\\b\\file.txt' , 'd:\\a\\b') ); // ..
//可以把一個相對位址轉成一個絕對位址
console.log( path.resolve('./file.txt') ); // D:\ke\SZ-GP4\20201012\file.txt
- fs : 與檔案系統互動
- readFile() : 異步讀取檔案
- readFileSync() : 同步讀取檔案
- writeFile()異步寫入檔案
- writeFileSync : 同步寫入檔案。
- appendFile()異步的追加資料到檔案,如果檔案不存在就建立檔案
- unlink() : 異步的删除檔案或者符号連結。
- rename() : 檔案重命名。
- mkdir() : 建立檔案夾。
- redir() : 删除檔案夾。
- readdir() : 讀取檔案夾。
- start():讀取檔案資訊
var fs = require('fs');
//并不是累加,格式重寫。
fs.writeFile('./a.txt','hi Node',function(err){});
//累加資料
fs.appendFile('./a.txt','hello vue',function(err){});
//如果檔案不存在,就先建立在寫入内容
fs.writeFile('./b.txt','hi Node',function(err){});
//删除檔案
fs.unlink('./b.txt',function(err){});
//重命名檔案
fs.rename('./a.txt','./c.txt',function(err){});
//建立檔案夾
fs.mkdir('myApp',function(err){});
//删除檔案夾
fs.rmdir('myApp',function(err){});
//讀取檔案夾
fs.readdir('../20201012',(err,data)=>{
console.log(data);
});
//讀取檔案的詳細資訊
fs.stat('../20201012',(err,data)=>{
console.log(data);
});
- 自定義的子產品
- 通過require引入子產品
- 通過module.exports修改子產品。
- 第三方子產品
- 下載下傳子產品 : cnpm install xxx
- 調用子產品
npm詳解
- 官網 : https://www.npmjs.com/
-
關于package.json :
1. 建立 : npm init 或 npm init -y
2. scripts : 定義了一組可以運作的 node 腳本。
- 讓調用的指令變得簡單。 npm run 腳本的屬性。( 例 : npm run serve)
- 調用局部安裝的軟體包。如果局部沒有這個包,才會找全局的包。直接在指令行中操作 -> 直接找全局的包。
3. dependencies 設定了作為依賴安裝的 npm 軟體包的清單。
- 生成環境 : 上線後用到的代碼。
- 安裝方式 : npm i xxx --save (-S) 可以簡寫為 npm i xxx (預設為 -S方式)
4. devDependencies 設定了作為開發依賴安裝的 npm 軟體包的清單。
- 開發環境 : 包括有 gulp工具 webpack工具 …
- 安裝方式 : npm i xxx --dev-save (簡寫 : npm i xxx -D);
5. npm i : 可以根據package.json中的依賴,安裝所有用到的地方子產品。
6. npm i --production 隻安裝生成環境的子產品。
7. npm uninstall -g xxx : 全局删除
8. npm uninstall -S xxx : 局部生成删除
9. npm uninstall -D xxx : 局部開發删除
子產品版本問題
- 安裝指定版本的子產品 : npm i [email protected]
- 檢視具體有哪些版本 : npm view xxx versions
- 版本 : (3.5.1) 大版本.中版本.更新檔版本
- latest | * : 最新版本
- ^1.2.3 : 大版本是固定,中版本和更新檔版本不固定
- ~1.2.3 : 大版本和中版本是固定,更新檔版本不固定
- 1.2.3 : 全部都是固定的
- 更新 : npm update xxx -> 根據package.json中的版本号來進行更新。
- 檢視項目中的所有過期子產品 : outdated
- 鎖定版本 : package-lock.json 。 npm 去下載下傳子產品的時候 就會生成 package-lock.json 。如果有package-lock.json這個檔案,那麼npm i 就不會自動去安裝,而是安裝鎖定的版本。
局部子產品的建立
1. 本地把功能先開發好
2. npmjs.com 去新增賬號
3. npm addUser : 添加賬号
4. npm publish : 釋出到平台上
5. npm unpublish : 删除包
全局子產品的建立
1. 開發功能
2. 給index.js 第一行添加指令 : #! /usr/bin/env node
3. package.json 添加
"bin": {
"包名": "index.js"
}
4. npm link 将全局包安裝(實際就是拷貝)到全局中
5. npm publish : 釋出到平台上