目錄
Node.js是什么
Node.js下載與安裝
Buffer緩沖區
一些計算機硬件基礎
程序運行的基本流程
Node.js是什么
node.js是一個JavaScript運行環境,或者說,node.js是一個可以運行JavaScript的軟件。
可以用于開發服務端、桌面端、工具類應用。
服務器端開發:對于一個上線的項目,光有服務器,是無法運行程序的,而node.js裝在服務端,node.js可以接收客戶端的請求,并把資源返回,使程序正常運行。
工具類應用:Webpack、Vite、Babel都是借助node.js實現的。
桌面端:VSCode、Postman、Figma都是借助于electron框架實現的,而electron是借助node.js實現的。
Node.js下載與安裝
官網:Node.js — Download Node.js?
安裝一路next就行了。
node.js沒有圖形化界面,需要通過命令行操作。
cmd敲node -v可以測試一下是否安裝成功。
命令行命令一般結構:命令名稱 參數
一些基礎的命令:
dir 查看當前目錄下的文件,只查看當前目錄下的文件,不顯示子文件
dir -s 查看目錄下所有文件內容,包括子文件夾
cd 進入目錄
./ 當前目錄
../上一級目錄
用命令行啟動node.js文件
node.js文件為javascript格式,為xxx.js文件,
在命令行中進入xxx.js文件存放的目錄,使用node xxx.js命令運行。
在VSCode的Terminal中敲node xxx.js也可以。
在Node.js中不能使用DOM和BOM的Api。
雖然Node.js可以運行JavaScript,但并非能夠處理全部的Api,只能處理fs、url、http、console、path、定時器等Api。
在Node.js中,頂級對象不是window,而是global或globalThis。
Buffer緩沖區
Buffer是一個類似Array的對象。Buffer是一段固定長度的內存空間,用于處理二進制數據。
Buffer的大小固定,且不能調整。Buffer可以直接操作內存,所以性能很好。Buffer中每一個元素的大小是一字節。
創建Buffer
Buffer可以使用alloc、allocUnsafe、from創建。
alloc
alloc語法調用的是Buffer對象中的alloc方法,Buffer是Node.js內置對象。
語法是Buffer.alloc(創建的Buffer的字節數)
用alloc創建的Buffer每一位都是0
let buffer = Buffer.alloc(10);
allocUnsafe
allocUnsafe與alloc類似,語法是Buffer.allocUnsafe(創建的Buffer的字節數)。
但不同的是,用allocUnsafe生成的Buffer,可能會包含內存中的舊數據。
也就是說,內存空間是可以復用的,如果一個程序使用了一段內存空間,在這個程序運行完畢之后,allocUnsafe也訪問了這段內存空間,allocUnsafe不會清空這段內存空間的數據,而是會直接復用。
allocUnsafe生成的Buffer中雖然會有意料之外的數據,但速度更快。
let buffer = Buffer.allocUnsafe(10);
from
用該語法,可以把字符串或數組轉換為Buffer。
對于字符串,在轉換時,每一個字母,會轉換成Unicode(Ascii)碼表(Unicode兼容Ascii)中對應的數字,再把數字轉換成二進制,存到Buffer中。
let buffer = Buffer.from('hello world');
Buffer.from(字符串)可以把字符串轉換成Buffer。
Buffer.toString(),可以把Buffer轉換回字符串。
對于數組,Buffer會把數組中的每一項轉換成二進制,然后存到Bufferr里。
讀取Buffer中的數據
使用[下標]
let buffer = Buffer.from('hello world');
console.log(buffer);
console.log(buffer[0]);
console.log(buffer[0].toString(16));
可以使用[]訪問數據、修改數據。
Buffer溢出
Buffer中一個位有一字節,一字節的范圍是0-255,如果某個字節值的賦值超過了255,則Buffer在存儲時會舍棄高位。把高于8位的二進制數字全部丟掉。
Buffer中文
如果Buffer.from中給的是中文,中文會按UTF-8處理,一個中文字占3字節。
一些計算機硬件基礎
CPU:中央處理器,整個計算機運行和控制的中心。程序中的運算最終都是由CPU進行處理的。
內存:存儲數據的介質。
硬盤:和內存很像,也可以存儲數據。內存存儲數據讀寫速度很快,但斷電會丟失數據。硬盤讀寫速度慢,但斷電不會丟失數據。對于一些需要長時間保存的數據,比如游戲數據、瀏覽器等等軟件,應該放在硬盤里。
顯卡:處理視頻信號,當有信息需要在顯示器呈現時,就會將信息對應的信號傳給顯卡,顯卡處理完畢后再傳給顯示器,顯示器最終顯示。
聲卡:處理聲音信號,如果遇到聲音信號需要播放,會把信號交給聲卡,聲卡把信號傳給外部播放設備(耳機、音響)等。
主板:大的集成電路板,上面有很多插槽,CPU、內存、硬盤和顯卡都是插在插槽上,通過主板連在一起。
機箱:把主板和一些其他計算機需要用到的硬件組裝在一起。(其他計算機硬件,比如散熱器:CPU運行會產生大量的熱量,這個熱量需要散走,否則會影響CPU速度,散熱器有水冷和風冷等,散熱器一般放在CPU旁邊)。
外設:一些插在機箱上的外部設備,鍵盤、鼠標、音像、顯示器等。
程序運行的基本流程
把硬件都組件完畢之后,計算機也不能完全正常運行。
除了硬件,計算機想運行還需要軟件,也就是操作系統。
主流的操作系統有Windows、Linux、MacOS。
操作系統是一種應用程序,用來管理和調度硬件資源。操作系統可以決定讓CPU執行哪個程序,可以進行磁盤操作,創建文件、刪除文件等。
裝系統:將操作系統程序安裝到硬盤。
當裝完系統,計算機就能正常啟動了。
在這個流程中,硬盤會將操作系統相關的一些程序、文件載入到內容中。載入到內存之后,CPU就能運行了,在CPU運行的過程中,如果發現需要傳輸視頻信號,有內容需要在顯示器呈現,就會交給顯卡處理,顯卡處理完,就會交給顯示器,顯示器最后顯示出頁面。如果遇到聲音信號需要播放,會把信號交給聲卡,聲卡把信號傳給外部播放設備(耳機、音響)等。
在打開電腦之后,應用程序是如何運行的呢?比如說我們想玩一個游戲,這個游戲如何運行。首先我們會把這個游戲的安裝包下載到電腦上,再運行安裝包,一般是把這個軟件安裝到硬盤上(但有時候也會安裝到軟盤上)。點擊游戲的圖標進行啟動,雙擊圖標之后,發生的事情和啟動操作系統差不多。首先硬盤會把和游戲相關的程序載入到內存,然后如果有指令需要運行,CPU會處理這些指令,執行過程中的視頻信號會交給顯卡,顯卡傳給顯示器,音頻信號會交給聲卡,聲卡交給外部播放設備。最后,就會在顯示器中顯示這個游戲的運行界面。