Play Open
Loading Please wait Loading Please wait Loading Please wait Loading Please wait Loading Please wait Loading Please wait

初學者指南:什麼是 Runtime 執行環境?

FacebookLinkedInTweet更新日期: 2025 年 7 月 4 日

本文為 Node.js 基礎,第 1 篇:

初學者指南:什麼是 Runtime 執行環境? 👈進度

初學者指南:Node.js 是什麼?

初學者指南:什麼是 Node.js 的 LTS 版本?

初學者指南:Node.js 和瀏覽器中常見函數的使用差異

nvm 是什麼?新手必看的 Node.js 版本管理工具指南

函數、模組、套件與框架之間的關係與差異

NPM 使用指南:如何管理 JavaScript 套件與依賴

不用看 README!從 package.json 快速掌握一個專案的完整指南

從 npm install 到 npm ci:你以為你懂了,其實沒這麼簡單!

什麼是程式?

簡單定義:給電腦的「指令清單」

程式(program)就是一串給電腦的指令清單。

這些指令告訴電腦該做什麼事情、按照什麼順序做。

✅ 你可以想像程式就像是:

食譜(告訴你一步步怎麼做蛋糕)

組裝說明書(一步步教你組一張桌子)

導航指示(一步步告訴你要怎麼走到目的地)

電腦本身很厲害,但它完全不會自己想事情。必須有人(程式設計師)告訴它每個小步驟,它才知道該怎麼做。

程式由什麼組成?

一個程式通常是由很多行的指令(code)組成的,這些指令會包含:

資料:要處理的東西(比如一個名字、一個數字)

操作:要對資料做什麼事(比如加起來、比較大小、顯示出來)

流程控制:決定下一步要做什麼(比如如果分數超過60分就顯示「及格」)

舉個超簡單的例子:

(這是一個「計算加總」的小程式)

let a = 5;

let b = 7;

let total = a + b;

console.log(total);

這個程式告訴電腦:

把 5 存到 a 裡

把 7 存到 b 裡

把 a 和 b 加起來,存到 total 裡

把 total 的結果印出來

所以電腦最後就會印出 12。

什麼是執行環境?

簡單定義:程式運作時的「工作空間」

當你寫好一個程式以後,電腦還需要一個地方來「執行」這些指令。

這個地方,就是我們說的「執行環境(execution environment)」。

✅ 可以把執行環境想成一個:

教室(讓學生有地方上課)

廚房(讓廚師能夠煮菜)

工廠(讓工人能夠生產產品)

你的程式就像是工人,而執行環境就是工廠本身,裡面會提供必須的資源,讓工人(程式)可以順利工作。

執行環境是做什麼的?

當程式開始執行時,電腦會建立一個「執行環境」,這個環境會幫忙做幾件非常重要的事情:

記錄資料

幫你保管變數和值,例如:記住 a = 5、b = 7 這些資訊。

管理操作

控制程式執行的流程,例如:遇到 console.log(total) 時要顯示結果。

提供工具

預先準備一些常用的功能,像是數學計算、印出資料、跟外界溝通的能力。

✅ 小提醒:如果沒有執行環境,程式就算寫好了,也根本「沒地方可以跑」,會像無家可歸的指令一樣,什麼都做不了!

更具體一點:執行環境裡面長什麼樣子?

可以想像執行環境裡會有很多「小格子」,每個格子負責一個綁定(binding)。

例如:

名稱資料a5b7total12console一個可以印出文字的功能

當你的程式說 console.log(total) 的時候,電腦就會:

先在這個環境裡找到 console 這個名字,拿出「印出文字」這個功能。

再找到 total 這個名字,拿到 12 這個數字。

然後執行印出 12 的動作。

✅ 這個過程,全部都是靠執行環境來完成的。

為什麼每種程式語言都需要執行環境?

程式本身只是「死的文字」

首先要理解一件事情:

程式碼(像是 JavaScript、Python、C++ 這些)本質上只是文字。

如果只是把程式碼寫在電腦裡,電腦是看不懂也做不了任何事的。

✅ 電腦不會自動懂「let a = 5」是什麼意思,它只會當成一堆亂碼看待。

執行環境是「解讀指令」+「提供支援」的地方

為了讓這些死的文字變成可以運作的東西,需要兩件事:

有人懂得讀這些指令(翻譯成電腦能理解的語言)

有人準備好基本功能和工具(像記憶資料、做數學運算、印出結果等等)

這個「有人」指的就是——執行環境(execution environment)!

✅ 簡單來說:

執行環境是負責「翻譯程式指令+提供執行資源」的超級助理。

沒有它,程式就只是一堆靜靜躺在檔案裡的文字,永遠跑不起來。

為什麼每種語言都要自己準備執行環境?

因為不同程式語言,講的是不同的「語言」!

舉例來說:

JavaScript 的 console.log('Hello')

Python 的 print('Hello')

C++ 的 std::cout << "Hello";

雖然這些指令都是「把文字印出來」,但是寫法完全不一樣!

✅ 所以,每種程式語言:

需要有自己專門的環境,能夠正確理解它的語法。

必須提供符合該語言標準的工具、函式和行為。

比如:

語言專用執行環境範例JavaScript瀏覽器(Chrome, Firefox)或 Node.jsPythonPython 直譯器(CPython, PyPy)C++編譯器 + 作業系統支援

每種語言,都有自己專屬的「翻譯員」和「工具箱」。

如果沒有執行環境,會發生什麼事?

如果沒有執行環境,程式就會:

無法被解讀(電腦不知道這些指令要做什麼)

無法保管資料(像 a=5 這樣的值也無法儲存)

無法進行互動(例如你打開網頁點按鈕,什麼事都不會發生)

✅ 簡單說:

沒有執行環境,程式=廢紙。

電腦只會傻傻地看著一堆無意義的文字,什麼行動也不會有。

執行環境有哪些重要特性?

當程式在運作時,執行環境會負責管理一切讓程式可以順利執行的資源和行為。

這個環境本身有幾個很重要的特性,每一個特性都直接影響程式能不能正常運作。

包含綁定(Binding)

在執行環境裡,最基本的一件事情就是:

將「名稱」和「實際的資料或功能」連在一起,這個動作叫做「綁定」。

✅ 比如說:

let name = 'Tom';

這裡的 name 這個名字,綁定到 'Tom' 這個資料上。

✅ 執行環境會記錄下這些綁定,讓你的程式在後面可以透過名字,隨時取出或操作資料。

提供互動的管道與手段(Interaction Mechanisms)

除了管理「自己內部的資料」以外,執行環境還有另一個很重要的功能:

讓程式能跟「外界」互動。

什麼叫「外界」?

使用者(比如滑鼠點擊、鍵盤輸入)

網路(比如請求伺服器資料)

檔案系統(比如讀取或儲存檔案)

其他裝置(像是印表機、相機)

✅ 舉例來說,如果你的程式想要:

讀取使用者輸入的帳號密碼

把資料送到一台遠端伺服器

顯示一張從網路下載下來的圖片

這些事情不是靠單純的程式指令就能完成,而是要透過執行環境提供的管道(API、方法)來達成。

如果沒有這些互動的手段,程式就會變成一個只能自己計算數字、什麼事也不能對外做的「孤島」。

執行環境的常見例子

瀏覽器中的執行環境

最常見、最熟悉的執行環境,就是「瀏覽器」!

當你開啟 Chrome、Firefox、Safari 的時候,瀏覽器會自動幫你建立一個 JavaScript 的執行環境。

這個環境裡面已經內建了很多功能,幫助你的程式跟使用者、網路互動。

✅ 例如瀏覽器提供的功能包括:

事件監聽器(Event Listener):讓你的程式能夠偵測使用者的操作,例如滑鼠點擊、鍵盤輸入。

網路請求(Network Request):讓你的程式可以透過 fetch 或 XMLHttpRequest 去跟伺服器拿資料。

計時器功能(Timers):讓你可以使用 setTimeout 或 setInterval,設定延遲執行或重複執行的動作。

DOM 操作(Document Object Model):讓你的程式可以動態改變網頁上的內容,例如新增一個按鈕,改變文字等等。

瀏覽器執行環境帶來的互動例子

有了這些內建功能,你的網頁程式就可以做到:

點擊按鈕,觸發一個事件(例如:彈出一個提示框)

填寫表單,把資料送到伺服器(例如:登入系統)

自動從後端載入新的資料並更新畫面(例如:看到新的貼文出現)

✅ 小提醒:

這些功能並不是「原生 JavaScript」本身就擁有的,而是瀏覽器這個執行環境額外提供的功能!

如果你單純把 JavaScript 程式碼拿到別的環境(比如 Node.js),那些像是 document、window 的東西就會消失,因為那已經不是瀏覽器了!

不同執行環境的差異

雖然「執行環境」這個概念在各種程式語言裡都是共通的,但不同的平台、不同的語言,實際提供的功能和資源卻差異很大!

為了幫助理解,我們可以從三個常見的執行環境來比較:

項目瀏覽器(Browser)Node.jsPython 執行器使用語言JavaScriptJavaScriptPython主要目標操作網頁、互動式內容操作伺服器、後端程式廣泛用途(科學運算、網頁後端、腳本)提供的互動功能DOM 操作、事件監聽、網路請求(AJAX)檔案系統存取、建立伺服器、處理網路連線檔案存取、資料處理、第三方套件(如 requests)能否直接操作網頁?✅ 可以操作(例如 document.getElementById)❌ 不能操作網頁元素❌ 不能操作網頁元素能否直接操作伺服器?❌ 不行,通常只能向伺服器發送請求✅ 可以直接開伺服器(例如 Express.js)✅ 可以直接開伺服器(例如 Django、Flask)能否讀寫本地檔案?❌ 不行,為了安全性禁止✅ 可以(使用 fs 模組)✅ 可以(使用 open() 函式)典型用途做出動態網頁、SPA網站寫API伺服器、批次任務、自動化腳本資料分析、網站後端、自動化腳本、AI應用

從上面的表格可以看到:

瀏覽器環境:最適合用來處理「網頁畫面」和「使用者互動」,但不能直接操作本地硬碟或開伺服器。

Node.js 環境:是給 JavaScript 用來在「伺服器」上跑的,沒有畫面控制功能,但可以讀寫硬碟、架網站。

Python 執行器:則是一個很萬用的環境,既可以寫小腳本,也可以開伺服器,還可以做資料分析、機器學習等用途。

✅ 因此,一段程式碼要能正確運作,除了要「寫對語法」,還要確保:

你所在的執行環境,有提供你需要用到的功能!

實際例子對比

最後,用一個具體的小例子,加深理解:

🔵 在瀏覽器中想要讀取一個按鈕的文字,可以這樣寫:

let text = document.getElementById('myButton').innerText;

console.log(text);

這裡使用了 document,是瀏覽器環境特有的功能。

如果你把這段程式丟到 Node.js 直接跑,會馬上錯誤,因為 Node.js 裡根本沒有 document!

🔵 在Node.js中讀取一個本地檔案,可以這樣寫:

const fs = require('fs');

const content = fs.readFileSync('data.txt', 'utf8');

console.log(content);

fs 是 Node.js 特有的模組,負責操作檔案系統。

如果你把這段程式丟到瀏覽器跑,會出錯,因為瀏覽器根本沒有 fs 這個東西!

結論

不同執行環境支援的功能不同,要選對工具!

同一種程式語言,在不同環境下能做的事情也會不一樣!

理解執行環境的差異,是成為真正能自由開發的工程師的基礎!

✅ 簡單記住:

「程式是語言,執行環境是舞台。不同的舞台,演出的內容自然也不同!」

Posted in 14年巴西世界杯
Previous
All posts
Next