# 程式語言與現代開發工具簡介
嗨,未來的開發者!👋 可不可以跟你說件每天都讓我雞皮疙瘩掉滿地的事?你即將發現,程式設計不只是關於電腦——它是擁有真正超能力,把你最狂野的想法實現出來的能力!
你知道那種用你最喜歡的 app,所有操作都剛剛好完美連接的瞬間嗎?當你按一個按鈕,然後發生了某種完全神奇的事,讓你忍不住想說「哇,他們到底怎麼做到的?」剛好,某個跟你一樣的人——可能正坐在他最喜歡的咖啡店裡凌晨兩點,喝著第三杯濃縮咖啡——寫了造就那魔法的程式碼。你將親眼見證的令人震驚的事是:到了這節課結束,你不僅會理解他們是怎麼做到的,還會迫不及待想要自己試試看!
聽著,如果你覺得程式設計現在很可怕,我完全可以理解。當我剛開始時,我真的以為你需要是某種數學天才,或者從五歲就開始寫程式。但徹底改變我觀念的是這件事:程式設計就像學一門語言溝通一樣。你從「你好」和「謝謝」學起,然後開始點咖啡,不知不覺你開始進行深刻的哲學討論!只不過在這案例裡,你是在和電腦對話。說真的?它們是你能找到的最有耐性的對話夥伴——它們從不責備你的錯誤,而是永遠準備好再試一次!
今天,我們將探索現代網頁開發令人驚嘆的工具,讓它不僅僅是可行,而是讓人嚴重上癮。我說的就是 Netflix、Spotify 和你喜歡的獨立應用工作室每天使用的同一套編輯器、瀏覽器和工作流程。最棒的是:這些專業級、業界標準的工具大多數都是完全免費的!

> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
journey
title 你今日嘅程式編寫旅程
section 發現
乜嘢係程式設計: 5: You
程式語言: 4: You
工具概覽: 5: You
section 探索
程式碼編輯器: 4: You
瀏覽器同開發者工具: 5: You
指令行: 3: You
section 練習
語言偵探: 4: You
工具探索: 5: You
社群連繫: 5: You
```
## 讓我們看看你已經知道些什麼!
在跳進有趣的內容前,我很好奇——你對程式設計這個世界已經知道多少?聽著,如果你看到這些問題心想「我根本完全沒概念」,那不只是可以,反而是完美!這表示你正處於正確位置。把這個小測驗想成運動前的暖身——我們只是熱身大腦肌肉!
[做課前測驗](https://forms.office.com/r/dru4TE0U9n?origin=lprLink)
## 我們即將一起展開的冒險
好啦,我真心為我們今天將探討的東西興奮到蹦蹦跳!說真的,我希望能看到當你理解這些概念的那張臉。這就是我們一起踏上的驚奇旅程:
- **什麼是程式設計(以及為什麼它超酷!)** – 我們要了解程式碼如何成為背後無形魔法,驅動你周遭一切,從那個能準時知道是星期一早晨的鬧鐘,到完美推薦你 Netflix 節目的算法
- **程式語言和它們奇妙的個性** – 想像走進一場派對,每個人都有完全不同的超能力和解決問題的方法。這就是程式語言的世界,你會很享受認識它們!
- **數位魔法的基本構件** – 想像這是終極創意樂高組合套件。一旦你了解這些積木怎麼拼組,你會發現你實際上能打造出你想像的任何東西
- **讓你感覺像握到魔法棒的專業工具** – 我不是誇張——這些工具真的會讓你覺得你有超能力,最棒的是?它們是專業人士每天使用的!
> 💡 **重點是**:今天不要想著要全部記住!我現在只想讓你感受到對可能性的那股興奮。細節會隨著我們一起練習自然記住——真正的學習就是這樣發生的!
> 你也可以在 [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/introduction-programming/?WT.mc_id=academic-77807-sagibbon) 上進行這堂課程!
## 那麼究竟什麼是*程式設計*?
好,來回答百萬美元的問題:程式設計到底是什麼?
我來分享一個徹底改變我思考的故事。上週我試著向媽媽解釋如何使用我們的新智慧電視遙控器。結果我發現自己一直在說「按紅色的按鈕,不是大紅色的,是左邊那個小紅色的…不,是另一個左邊…好,現在按住兩秒,不是一秒,不是三秒…」聽起來很熟悉嗎?😅
這就是程式設計!它是對一個非常強大的東西,給出極度詳細、逐步的指令,而它需要所有步驟都說得非常清楚的藝術。只不過你不是在解釋給媽媽聽(她可以問「哪個紅色按鈕?!」),而是在解釋給電腦——電腦會精確執行你說的每一句話,即便你真正想說的不是這樣。
第一次學到這點時讓我震撼的是:電腦其實本質非常簡單。它們字面上只懂兩個東西——1 和 0,基本上就是「是」和「否」或「開」和「關」。就這樣!但神奇之處在於——我們不必像《駭客任務》裡那樣只說 1 和 0 。這時就是**程式語言**大顯身手的地方。它們就像世界上最棒的翻譯官,把你正常的人類思考完美地轉換成電腦語言。
而每天早上醒來仍讓我起雞皮疙瘩的是:你生活中所有數位東西都是由跟你一樣的人開始的,可能他們穿著睡衣,手裡拿著咖啡,在筆電前敲著程式碼。讓你看起來完美無瑕的 Instagram 濾鏡?有人寫了那程式碼。推推薦你發現新歌的算法?一位開發者設計了它。幫你和朋友分餐費用的 app?沒錯,有人想「這很煩,我一定能解決它」,結果…他們做到了!
學程式不僅是學新技術——你是加入這個超棒的問題解決社群,他們每天的想法是,「如果我能做出些什麼讓別人的生活更好一點點呢?」說真的,還有比這更帥的事嗎?
✅ **趣味知識探索**:有空時去查查世界上第一位程式設計師是誰?提示一下:她可能不是你預期的人!她的故事非常吸引人,而且證明了程式設計一直是關於創意解決問題和跳出框架思考。
### 🧠 **回顧時間:你感覺如何?**
**花點時間反思:**
- 「給電腦下指令」的概念現在對你來說有意義嗎?
- 你能想到想用程式自動化的日常任務嗎?
- 關於程式設計,你腦中冒出什麼問題?
> **記住**:如果某些概念現在還模糊是完全正常的。學程式就像學一門新語言——你的大腦需要時間建立神經通路。你做得很棒!
## 程式語言就像不同口味的魔法
好啦,這聽起來怪怪的,但跟我走——程式語言很像不同類型的音樂。想想看:有浪漫即興的爵士樂、強而有力的搖滾、典雅嚴謹的古典樂和充滿創造力與表達的嘻哈。每種風格都有自己的氛圍、熱情粉絲社群,也適合不同心情和場合。
程式語言也是如此!你不會用同一種語言寫一款有趣的手機遊戲和處理大量氣候數據的程式,就像你不會在瑜伽課播放死亡金屬(嗯,大多數瑜伽課至少是這樣😄)。
每次想起這點,我都覺得超神奇:這些語言就像世界上最有耐性的、最聰明的口譯員坐在你旁邊。你以對你腦子自然的方式表達想法,它們處理把這些轉成電腦真正懂的 1 和 0。就像你有一位朋友同時流利「人類創意」和「電腦邏輯」——而且永不疲倦、不需要喝咖啡休息,也不會因為你問第二次同樣問題而嘲笑你!
### 熱門程式語言與用途
```mermaid
mindmap
root((程式語言))
Web Development
JavaScript
前端魔法
互動網站
TypeScript
JavaScript + 類型
企業應用
Data & AI
Python
數據科學
機器學習
自動化
R
統計學
研究
Mobile Apps
Java
安卓
企業
Swift
iOS
蘋果生態系統
Kotlin
現代安卓
跨平台
Systems & Performance
C++
遊戲
性能關鍵
Rust
記憶體安全
系統編程
Go
雲端服務
可擴展後端
```
| 語言 | 最適合的用途 | 為什麼受歡迎 |
|----------|----------|------------------|
| **JavaScript** | 網頁開發、使用者介面 | 在瀏覽器執行,驅動互動網站 |
| **Python** | 數據科學、自動化、AI | 易讀易學,擁有強大函式庫 |
| **Java** | 企業應用、Android 應用 | 跨平台,適合大型系統 |
| **C#** | Windows 應用、遊戲開發 | 微軟生態系統強力支援 |
| **Go** | 雲端服務、後端系統 | 快速、簡單,為現代運算設計 |
### 高階語言 vs 低階語言
說實話,這是我剛開始學程式時完全被弄得暈頭轉向的概念,所以我會分享讓我終於理解的比喻——希望也能幫助你!
想像你去到一個陌生國家,你不會說當地語言,而你急著要找廁所(大家都有這經驗吧?😅):
- **低階程式設計** 就像你學會當地方言,甚至能跟街角賣水果的老奶奶用文化暗號、地方俚語和只有在當地長大的人才懂的笑話聊天。超厲害而且效率超高……但前提是你必須流利!不然光找廁所就快瘋掉。
- **高階程式設計** 就像你有個超棒的當地朋友理解你。你只要用簡單的英文說「我很需要找廁所」,他就會做所有文化轉換,給你用你這個局外人腦袋能懂的指引。
用程式語言來說:
- **低階語言**(像組合語言或 C)讓你能和電腦硬體進行非常細緻的對話,但你必須用機器的思維方式——嗯,可以說是大腦大轉彎!
- **高階語言**(像 JavaScript、Python 或 C#)讓你用人的思考方式,而它們在背後處理所有機器語言的轉換。而且它們還有熱情的社群,有許多曾經是新手的人,真心想幫忙!
你猜我建議從哪開始?😉 高階語言就像有輔助輪,你會捨不得拆掉,因為它讓整個體驗愉快許多!
```mermaid
flowchart TB
A["👤 人類思考:
'我想計算費波納契數列'"] --> B{選擇語言層級}
B -->|高階| C["🌟 JavaScript/Python
易讀易寫"]
B -->|低階| D["⚙️ 組合語言/C
直接硬體控制"]
C --> E["📝 撰寫:fibonacci(10)"]
D --> F["📝 撰寫:mov r0,#00
sub r0,r0,#01"]
E --> G["🤖 電腦理解:
翻譯器處理複雜性"]
F --> G
G --> H["💻 相同結果:
0, 1, 1, 2, 3, 5, 8, 13..."]
style C fill:#e1f5fe
style D fill:#fff3e0
style H fill:#e8f5e8
```
### 讓我告訴你為什麼高階語言更友善
好,我馬上展示一個絕佳例子,說明我為何愛上高階語言。不過先請你答應我一件事。看到第一個程式碼範例時,別怕!看起來嚇人完全是我的重點!
我們會用兩種完全不同方式寫同樣的任務。兩個都產生所謂的費氏數列——這是一個美麗的數學模式,每個數字都是前兩個數字之和:0、1、1、2、3、5、8、13……(趣味知識:你會在大自然各處找到這個模式——向日葵種子漩渦、松果圖案、甚至星系形成方式!)
準備好看到差異了嗎?出發!
**高階語言(JavaScript)– 對人類友善:**
```javascript
// 第一步:基本斐波那契設置
const fibonacciCount = 10;
let current = 0;
let next = 1;
console.log('Fibonacci sequence:');
```
**這段程式碼做了什麼:**
- **宣告** 一個常數指定要產生多少 Fibonacci 數字
- **初始化** 兩個變數追蹤目前和下一個序列數字
- **設定** 起始值(0 和 1)定義 Fibonacci 模式
- **顯示** 標題訊息辨識輸出
```javascript
// 步驟 2:使用迴圈生成序列
for (let i = 0; i < fibonacciCount; i++) {
console.log(`Position ${i + 1}: ${current}`);
// 計算序列中的下一個數字
const sum = current + next;
current = next;
next = sum;
}
```
**分解運作過程:**
- **使用** `for` 迴圈走訪序列的每個位置
- **顯示** 每個數字及其位置,使用模板字串格式化
- **計算** 下一個 Fibonacci 數字為現值與次值相加
- **更新** 追蹤變數,以進入下一輪迴圈
```javascript
// 第三步:現代函數式方法
const generateFibonacci = (count) => {
const sequence = [0, 1];
for (let i = 2; i < count; i++) {
sequence[i] = sequence[i - 1] + sequence[i - 2];
}
return sequence;
};
// 使用範例
const fibSequence = generateFibonacci(10);
console.log(fibSequence);
```
**在上面,我們:**
- **創建** 使用現代箭頭函數語法的可重複使用函式
- **建構** 陣列儲存完整序列,而非逐個顯示
- **使用** 陣列索引由前值計算每個新數字
- **回傳** 完整序列以便程序其他部分彈性使用
**低階語言(ARM 組合語言)– 對電腦友善:**
```assembly
area ascen,code,readonly
entry
code32
adr r0,thumb+1
bx r0
code16
thumb
mov r0,#00
sub r0,r0,#01
mov r1,#01
mov r4,#10
ldr r2,=0x40000000
back add r0,r1
str r0,[r2]
add r2,#04
mov r3,r0
mov r0,r1
mov r1,r3
sub r4,#01
cmp r4,#00
bne back
end
```
注意 JavaScript 幾乎像英文指令一樣易讀,而組合語言用神秘指令直接控制電腦處理器。兩者完成完全相同的任務,但高階語言對人類來說更容易理解、撰寫和維護。
**你會注意到的主要差異:**
- **可讀性**:JavaScript 使用描述性名稱如 `fibonacciCount`,組合語言用難懂標籤如 `r0`、`r1`
- **註解**:高階語言鼓勵使用解釋性的註解,使程式碼本身成為自我說明
- **結構**:JavaScript 的邏輯流程與人類逐步思考問題的方式相符合
- **維護**:根據不同需求更新 JavaScript 版本是直觀且清晰的
✅ **關於費波那契數列**:這個絕美的數字模式(每個數字是前兩項的和:0、1、1、2、3、5、8……)幾乎在自然界到處可見!你會在向日葵螺旋、松果排列、鳳梨貝殼的弧度,甚至樹枝的生長方式中看到它。數學與程式碼如何幫助我們理解並重現自然用來創造美的模式,實在令人驚嘆!
## 讓魔法發生的基本元素
好了,現在你已經見識過程式語言的實際運作,我們來拆解構成每一段程式碼的基本部分。把這些想成你最愛食譜中的關鍵材料──一旦瞭解每個元素的功能,你就能閱讀並撰寫幾乎任何語言的程式碼!
這有點像學習程式設計的文法。還記得學校時學過名詞、動詞以及如何組成句子嗎?程式語言也有自己的文法,老實說,它比英文文法邏輯多也更寬容!😄
### 陳述句:逐步指令
先從 **陳述句** 開始──它們就像與電腦對話中的單句話。每句陳述告訴電腦要做一件具體的事,就像指示:「這裡左轉」、「紅燈停下」、「停在那個車位」。
我喜歡陳述句的是它們通常很易讀。看看這個:
```javascript
// 執行單一操作的基本語句
const userName = "Alex";
console.log("Hello, world!");
const sum = 5 + 3;
```
**這段程式碼做了什麼:**
- **宣告**一個常數變數來存放使用者名稱
- **顯示**歡迎訊息到控制台輸出
- **計算**並儲存一個數學運算結果
```javascript
// 與網頁互動的語句
document.title = "My Awesome Website";
document.body.style.backgroundColor = "lightblue";
```
**一步一步看發生了什麼:**
- **修改**瀏覽器頁籤上顯示的網頁標題
- **變更**整個頁面內容的背景顏色
### 變數:程式的記憶體系統
說實話,**變數** 是我最喜歡教的概念之一,因為它們就像你每天都會用到的東西!
想像一下你的手機聯絡人列表。你不會記得每個人的電話號碼──而是將「媽媽」、「最好的朋友」或「凌晨兩點還送披薩的店」存起來,讓手機記住實際的號碼。變數就是這樣!它們是有標籤的容器,你的程式可以使用有意義的名稱存取資訊。
更酷的是:變數會隨著程式運行而改變(所以叫「變數」──你懂的吧?)。就像發現更好的披薩店時會更新聯絡資訊一樣,變數能隨著程式得到新資訊或情況改變而更新!
讓我示範這有多簡單又美妙:
```javascript
// 第一步:建立基本變量
const siteName = "Weather Dashboard";
let currentWeather = "sunny";
let temperature = 75;
let isRaining = false;
```
**理解這些概念:**
- **存放**不變的數值到 `const` 變數(比如網站名稱)
- **使用** `let` 定義可變動的數值
- **賦予**不同的資料型態:字串(文字)、數字及布林值(真/假)
- **選擇**描述性的名稱說明變數內容
```javascript
// 第 2 步:使用物件來群組相關資料
const weatherData = {
location: "San Francisco",
humidity: 65,
windSpeed: 12
};
```
**上面我們:**
- **建立**一個物件來群組相關的天氣資訊
- **整理**多筆資料放在同一個變數名稱下
- **用**鍵值對清楚標示每筆資訊
```javascript
// 第3步:使用及更新變數
console.log(`${siteName}: Today is ${currentWeather} and ${temperature}°F`);
console.log(`Wind speed: ${weatherData.windSpeed} mph`);
// 更新可變變數
currentWeather = "cloudy";
temperature = 68;
```
**理解每個部分:**
- **顯示**內容使用帶有 `${}` 語法的模板字串
- **使用**點記法 (`weatherData.windSpeed`) 取物件屬性
- **更新**使用 `let` 宣告的變數以反映變化
- **結合**多個變數創造有意義的訊息
```javascript
// 第4步:使用現代解構賦值以使代碼更清晰
const { location, humidity } = weatherData;
console.log(`${location} humidity: ${humidity}%`);
```
**你需要知道的:**
- **從物件中解構賦值以擷取特定屬性**
- **創建與物件鍵相同名稱的新變數**
- **簡化程式碼,避免反覆使用點記法**
### 控制流程:教你的程式思考
好了,這就是程式設計讓人驚嘆的地方!**控制流程** 就是教你的程式如何做出智慧決策,就像你每天不假思索地做的一樣。
想像一下:今天早上你可能心裡想「如果下雨,我就帶傘;如果很冷,我會穿外套;如果我遲到了,我會跳過早餐順路買杯咖啡。」你的大腦天然遵循這種如果──那麼的邏輯,天天做好幾十次!
這就是為什麼程式感覺聰明又活潑,而不只是乏味、可預測的腳本。它們真能看情況、評估狀況,並適當回應。就像給你的程式一顆能適應並做決定的大腦!
想看看這個邏輯怎麼精采運作?讓我示範:
```javascript
// 第一步:基本條件邏輯
const userAge = 17;
if (userAge >= 18) {
console.log("You can vote!");
} else {
const yearsToWait = 18 - userAge;
console.log(`You'll be able to vote in ${yearsToWait} year(s).`);
}
```
**這段程式碼做的事:**
- **檢查**使用者是否達到投票年齡要求
- **依條件結果執行**不同程式區塊
- **計算**並顯示距離投票資格還要多久(如果未滿18歲)
- **針對各情況提供**具體有用的回饋
```javascript
// 第 2 步:使用邏輯運算子設置多重條件
const userAge = 17;
const hasPermission = true;
if (userAge >= 18 && hasPermission) {
console.log("Access granted: You can enter the venue.");
} else if (userAge >= 16) {
console.log("You need parent permission to enter.");
} else {
console.log("Sorry, you must be at least 16 years old.");
}
```
**解析這裡發生的事:**
- **用 `&&`(且)運算子結合多個條件**
- **用 `else if` 建立多層條件階層處理多種情況**
- **最後用 `else` 處理所有剩餘可能狀況**
- **為每種情況提供明確可執行的回饋**
```javascript
// 第三步:使用三元運算子寫簡潔的條件判斷
const votingStatus = userAge >= 18 ? "Can vote" : "Cannot vote yet";
console.log(`Status: ${votingStatus}`);
```
**你需要記住:**
- **用三元運算子(`? :`)處理簡單的兩種條件**
- **先寫條件,接著 `?`,然後是條件成立結果,接著是 `:`,最後是不成立結果**
- **當要根據條件賦值時運用此模式**
```javascript
// 第4步:處理多個特定情況
const dayOfWeek = "Tuesday";
switch (dayOfWeek) {
case "Monday":
case "Tuesday":
case "Wednesday":
case "Thursday":
case "Friday":
console.log("It's a weekday - time to work!");
break;
case "Saturday":
case "Sunday":
console.log("It's the weekend - time to relax!");
break;
default:
console.log("Invalid day of the week");
}
```
**這段程式碼完成的事:**
- **根據變數值匹配多個具體案例**
- **將類似案例(平日與週末)分組**
- **找到匹配時執行對應區塊**
- **包含 `default` 處理意外值**
- **用 `break` 阻止程式繼續執行後續案例**
> 💡 **現實世界類比**:把控制流程想成世界上最有耐心的 GPS 指路員。它可能說「如果主要幹道塞車,改走高速公路。如果高速公路施工,試試風景路線。」程式用完全相同的條件邏輯,智能地回應不同情況,總給使用者最佳體驗。
### 🎯 **概念檢視:基礎元素精通**
**讓我們來看看你基礎掌握得如何:**
- 你能用自己的話解釋變數和陳述句的不同嗎?
- 想一個現實例子,使用 if-then 決策(就像投票範例)
- 程式邏輯中,有什麼令你感到意外的事?
**快速信心提升:**
```mermaid
flowchart LR
A["📝 陳述
(指令)"] --> B["📦 變量
(儲存)"] --> C["🔀 控制流程
(決策)"] --> D["🎉 工作程式!"]
style A fill:#ffeb3b
style B fill:#4caf50
style C fill:#2196f3
style D fill:#ff4081
```
✅ **接著要探討的是**:我們將一起深入挖掘這些概念,展開一段令人興奮的旅程!現在只要感受未來諸多精彩可能帶來的興奮。隨著練習,特定技巧和方法自然會掌握──我保證這比你想像中還更有趣!
## 開發工具
說真的,這裡是我最興奮到快控制不住自己的一部分!🚀 我們將說說那些令人感覺像握到了數位太空船鑰匙的神奇工具。
你知道廚師手中完美平衡、彷彿化身為手的刀具嗎?或是音樂家那把一碰就奏出美妙音符的吉他?開發者也有我們自己的神奇工具,而下面這些會徹底顛覆你的想像──其中大多完全免費!
我自己坐立難安想跟你分享這些,因為它們徹底改變了我們打造軟體的方式。我們談的是由 AI 助理撰寫程式碼的工具(我不是開玩笑!)、可以從任何有 Wi-Fi 的地方建立整個應用的雲端環境,還有讓你程式宛如 X 光般透視的偵錯工具。
震撼的是:這些不是你用一陣子就會丟掉的「新手工具」,它們就是 Google、Netflix 還有你喜歡的獨立應用工作室活躍開發者此刻用的專業級工具。你會用它們感覺像個專家!
```mermaid
graph TD
A["💡 你的點子"] --> B["⌨️ 程式碼編輯器
(VS Code)"]
B --> C["🌐 瀏覽器開發工具
(測試與除錯)"]
C --> D["⚡ 命令列
(自動化與工具)"]
D --> E["📚 文件說明
(學習與參考)"]
E --> F["🚀 超讚的網頁應用!"]
B -.-> G["🤖 AI 助理
(GitHub Copilot)"]
C -.-> H["📱 裝置測試
(響應式設計)"]
D -.-> I["📦 套件管理器
(npm, yarn)"]
E -.-> J["👥 社群
(Stack Overflow)"]
style A fill:#fff59d
style F fill:#c8e6c9
style G fill:#e1f5fe
style H fill:#f3e5f5
style I fill:#ffccbc
style J fill:#e8eaf6
```
### 程式碼編輯器與整合開發環境:你的新數位好夥伴
談談程式碼編輯器──這可真快成為你最愛聚集的地方!把它想成你的程式碼聖地,你會花最多時間在這裡編寫和優化數位創作。
而且現代編輯器超魔法──它們不只是花俏的文本編輯器。它們就像全天候坐在你旁邊、無比聰明而且支持你寫程式的導師。它們會在你發現錯字之前找到它們,建議改善讓你看起來更厲害,還幫你理解每段程式碼在做什麼,其中一些甚至能預測你下一步打什麼與你的想法!
我還記得第一次發現自動完成功能──感覺彷彿生活在未來。你開始打字,編輯器就跳出來說:「诶,你是不是想用這個,剛好能幫你完成需要的功能?」就像有個心靈感應的程式碼夥伴!
**令這些編輯器不可思議的原因?**
現代程式碼編輯器提供一系列功能,設計來提升你的生產力:
| 功能 | 功能說明 | 為何有用 |
|---------|--------------|--------------|
| **語法高亮** | 為程式碼不同部分著色 | 讓程式碼更易讀與找錯 |
| **自動完成** | 打字時推薦程式碼 | 加快寫程式速度並減少錯字 |
| **除錯工具** | 幫你找到並修正錯誤 | 節省無數除錯時間 |
| **擴充功能** | 新增專業化能力 | 讓你能依技術需求客製編輯器 |
| **AI 助手** | 建議程式碼與解說 | 加速學習與工作效率 |
> 🎥 **影片資源**:想實際看看這些工具的運作?請觀看這部 [Tools of the Trade video](https://youtube.com/watch?v=69WJeXGBdxg) 獲得完整介紹。
#### 推薦給網頁開發者的編輯器
**[Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon)**(免費)
- 網頁開發者最火紅的編輯器
- 擁有豐富擴充生態系
- 內建終端機與 Git 整合
- **必裝擴充**:
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) - AI 程式碼建議
- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) - 即時協作
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - 自動格式化程式碼
- [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) - 抓出程式碼錯字
**[JetBrains WebStorm](https://www.jetbrains.com/webstorm/)**(付費,學生免費)
- 進階除錯與測試工具
- 智慧程式碼補全
- 內建版本控制
**雲端 IDE**(多種定價)
- [GitHub Codespaces](https://github.com/features/codespaces) - 瀏覽器中完整 VS Code
- [Replit](https://replit.com/) - 非常適合學習與分享程式碼
- [StackBlitz](https://stackblitz.com/) - 即時全端網頁開發
> 💡 **入門建議**:先用 Visual Studio Code──它免費,行業使用率高,社群及教學資源豐富。
### 網頁瀏覽器:你的秘密開發實驗室
準備好徹底被震撼了嗎!你知道一直以來用瀏覽器滑社交媒體和看影片,其實它們藏著一個巨大的秘密開發實驗室?
每次你在網頁上點右鍵選「檢查」元素,就是在開啟一個隱藏的開發者工具世界──它們強大到比我以前花大錢買的某些軟體還厲害。就像發現你平凡廚房後面藏著一座專業大廚實驗室的秘密通道!
第一次有人向我展示瀏覽器 DevTools 時,我花了差不多三個小時一直點來點去,然後不停地說:「等等,原來它仲可以做呢啲嘢?!」你可以即時修改任何網站,準確睇到每樣嘢加載嘅速度,測試你嘅網站喺唔同裝置上嘅效果,甚至可以好似專業人士咁除錯 JavaScript。真係令人嘆為觀止!
**以下係瀏覽器成為你秘密武器嘅原因:**
當你建立網站或者網頁應用程式時,你需要睇下佢喺現實世界中嘅外觀同埋行為。瀏覽器唔單止係用嚟顯示你嘅作品,仲會提供有關效能、無障礙性同埋潛在問題嘅詳細反饋。
#### 瀏覽器開發者工具(DevTools)
現代瀏覽器包咗全面嘅開發套件:
| 工具類別 | 功能 | 使用範例 |
|---------------|--------------|------------------|
| **元素檢查器** | 即時檢視同編輯 HTML/CSS | 調整樣式,立即睇到結果 |
| **主控台** | 查看錯誤訊息同測試 JavaScript | 除錯問題同試驗代碼 |
| **網絡監控器** | 跟踪資源加載情況 | 優化效能同載入時間 |
| **無障礙檢查器** | 測試包容性設計 | 確保網站適合所有用戶使用 |
| **裝置模擬器** | 預覽不同屏幕尺寸效果 | 測試響應式設計無需多部裝置 |
#### 推薦開發用瀏覽器
- **[Chrome](https://developers.google.com/web/tools/chrome-devtools/)** - 業界標準 DevTools,有豐富文檔
- **[Firefox](https://developer.mozilla.org/docs/Tools)** - 出色嘅 CSS Grid 同無障礙工具
- **[Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon)** - 基於 Chromium,配合微軟開發資源
> ⚠️ **重要測試提示**:一定要喺多個瀏覽器上測試網站!喺 Chrome 完美運作嘅嘢,可能喺 Safari 或 Firefox 呈現唔同。專業開發者會喺所有主流瀏覽器測試,確保用戶體驗一致。
### 命令行工具:開發者超能力之門
好啦,講真,我哋依家誠實吓講命令行,因為我想你聽聽一個真係明白你嘅人嘅心聲。初次見到佢嗰陣──只係一個可怕嘅黑色畫面同閃動字元──我真係以為:「唔,好唔得!呢啲好似1980年代駭客電影入面先有嘅,完全唔係我啱用嘅!」😅
但我希望當年有人告訴我(而家我就告訴你):命令行唔驚人──其實好似直接同你嘅電腦對話咁。想像下,叫外賣經過一個有圖有菜單嘅高級app(好方便),同埋行入你最愛嘅本地餐廳,廚師只需你一句「驚喜點啲特別嘢畀我」就整返啱你嘅餐點,兩者完全不一樣。
命令行係開發者感覺自己成為巫師嘅地方。你打幾個似乎好神奇嘅字(好啦,其實就係指令,但佢哋感覺好神奇!),按 enter,嘭──你就建立咗整個項目結構,從全球安裝強大工具,或者把你嘅應用部署到互聯網,畀數百萬人睇到。試過一次嗰種力量,真係令人上癮!
**點解命令行會成為你最愛嘅工具:**
雖然圖形介面好適合好多任務,但命令行擅長自動化、精確同速度。好多開發工具主要透過命令行介面操作,而學懂點高效使用可以大大提升你嘅生產力。
```bash
# 第一步:創建並進入專案目錄
mkdir my-awesome-website
cd my-awesome-website
```
**呢段代碼做緊啲咩:**
- **建立** 一個叫 "my-awesome-website" 嘅新目錄俾你嘅項目用
- **進入** 新建立嘅目錄開始工作
```bash
# 第2步:使用 package.json 初始化項目
npm init -y
# 安裝現代開發工具
npm install --save-dev vite prettier eslint
npm install --save-dev @eslint/js
```
**一步步嘅流程說明:**
- **初始化** 使用 `npm init -y` 用預設設置建立新嘅 Node.js 項目
- **安裝** Vite 作為快速開發同生產構建嘅現代構建工具
- **添加** Prettier 用自動格式化代碼,ESLint 用檢查代碼質量
- **用** `--save-dev` 標記佢哋係僅開發時依賴
```bash
# 第三步:建立項目結構及檔案
mkdir src assets
echo '