1. 程式人生 > 實用技巧 >Node基礎

Node基礎

1.Node開發

1.1 Node是什麼

Node是一個基於Chrome V8 引擎的JavaScript程式碼執行環境

2. Node執行環境搭建

2.1 Node.js執行環境安裝

官網:https://nodejs.org/en/

· LTS = Long Term Support長期支援版 穩定版

· Current 擁有最新特性 實驗版

3. Node.js快速入門

3.1 Node.js 的組成

· JavaScript由三部分組成,ECMAScript,DOM,BOM
· Node.js是由ECMAScriptNode環境提供的一些附加API

組成的,包括檔案、網路、路徑等一些更加強 大的API.

命令列小技巧

① 按住shift鍵 點選滑鼠右鍵 點選 在此處開啟Powershell視窗 可以使當前命令列的工作目錄跟檔案 目錄處於同一個目錄
② 輸入node 檔名開頭(不用全)按TAB鍵 命令列會自動補全檔名字和檔案路徑
③ 檔案需要反覆執行 按shift鍵就可以切換到剛才執行過的命令
clear清除之前的命令

4. Node.js模組化開發

4.1 JavaScript開發弊端

JavaScript在使用時存在兩大問題,檔案依賴 和 命名衝突。

4.2 Node.js 中模組化開發規範

· Node.js規定一個JavaScript檔案

就是一個模組,模組內部定義的變數和函式預設情況下在外部無法 得到
· 模組內部可以使用exports物件進行成員匯出,使用require方法匯入其他模組。

//a.js
//在模組內部定義add方法
const add = (n1,n2) => n1 + n2;
//向模組外部匯出資料
exports.add = add;
//b.js
//在b.js模組中匯入模組a 
//匯入模組時 字尾(.js)可以省略
const a = require('./a.js');
//呼叫b模組中的add方法並輸出結果
console.log(a.add(10,20));

4.3 模組成員匯出的另一種方式

module.exports.add = add;

exportsmodule.exports的別名(地址引用關係),匯出物件最終以module.exports為準

當exports物件和moudle.exports物件指向的不是同一個物件時,以module.exports為準。

5.系統模組

5.1 Node執行環境提供的API。因為這些API都是以模組化的方式進行開發的,所以我們又稱Node執行環

境提供的API為系統模組

5.2 系統模組fs

fs 檔案作業系統(讀取檔案是硬碟操作 需要通過回撥函式方式獲取檔案讀取的結果)

const fs = require('fs');
fs.readFile('檔案路徑/檔名稱'[,檔案編碼],callback);
const fs = require('fs');
//讀取上一級css目錄下的base.css
fs.readFile('../css/base.css','utf8',(err,doc) =>{
    //如果檔案讀取發生錯誤 引數err的值為錯誤物件 否則err的值為null
    //doc引數為檔案內容
    if (err == null) {
        //在控制檯中輸出檔案內容
        console.log(doc);
    }
})

寫入檔案內容

fs.writeFile('檔案路徑/檔名稱','資料',callback);

5.3 系統模組path 路徑操作

為什麼要進行路徑拼接

· 不同作業系統的路徑分隔符不統一
· /public/unploads/avatar
· Windows上是\/
· Linux上是/

path.join('路徑','路徑',...)
//匯入path模組
const path = require('path');
//路徑拼接 path不屬於耗時操作 可以通過返回值接收拼接結果
const finialPath = path.join('Node','code','03.module-a.js');
//輸出結果Node\code\03.module-a.js
console.log(finialPath);

5.4 相對路徑 vs 絕對路徑

· 大多數情況下使用絕對路徑,因為相對路徑有時候相對的是命令列工具的當前工作目錄

· 在讀取檔案或者設定檔案路徑時都會選擇絕對路徑

· 使用__dirname獲取當前檔案所在的絕對路徑

· 使用require方法的時候 可以使用相對路徑

const path = require('path');
const a = require(path.join(__dirname,'03.module-a.js'));

6.第三方模組

別人寫好的、具有特定功能的。能直接使用的模組即第三方模組,由於第三方模組通常都是由多個檔案組成並且被放置在一個資料夾中,所以又名包。

第三方模組兩種存在形式

· 以js檔案的形式存在,提供實現專案具體功能的API介面。
· 以命令列工具形式存在,輔助專案開發

6.2 獲取第三方模組


npmjs.com:第三方模組的儲存和分發倉庫

· 下載:npm install 模組名稱

· 解除安裝:npm uninstall package 模組名稱

命令列工具:全域性安裝

庫檔案:本地安裝


6.3 第三方模組 nodemon

使用步驟

① 使用npm install nodemon -g 下載它

② 在命令列工具中用nodemon命令替代node命令執行檔案

ctrl+c 在命令列工具中是 終止操作


6.4 第三方模組 nrm

nrm : npm 下載地址切換工具

npm 預設的下載地址在國外,國內下載速度慢

使用步驟

① 使用npm install nrm -g 下載它

② 查詢可用下載地址列表 nrm ls

③ 切換npm下載地址 nrm use 下載地址名稱