問題一:為什麼大型網站前端代碼不可讀?
- 構建產物非源碼:你看到的是經過 **Webpack/Vite 打包、Babel 轉譯、Terser 壓縮混淆、Tree Shaking、代碼分割** 後的產物,變量名被縮短 (a,b,c)、註釋被剔除、模塊被合併,**根本不是開發者維護的源碼**。
- 源碼管理:開發者維護的是 TypeScript/ES6+、Vue/React 組件、SCSS 等結構清晰、註釋豐富的源碼,存放在 Git 倉庫,構建流程自動化生產部署代碼。
- Source Map:生產環境可上傳 Source Map 到錯誤監控平台 (Sentry),還原報錯位置到源碼,而非發布給瀏覽器。
問題二:JavaScript 為什麼不統一前後端? (Node.js 已經實現了)
- 歷史原因:早期 JS 僅運行在瀏覽器,無文件系統、網絡、線程 API,性能極差 (解釋執行)。
- V8 引擎突破:2008 年 Chrome V8 引入 JIT 編譯、隱藏類、內聯緩存,JS 性能提升 10-100 倍,使服務端運行成為可能。
- Node.js 誕生 (2009):Ryan Dahl 基於 V8 + libuv 實現異步非阻塞 I/O,統一前後端語言夢想成真。
- 現狀:Node.js 如今是**主流後端技術棧之一** (Netflix, Uber, PayPal, 中大型前端團隊 BFF 層),配合 TypeScript 開發大型應用完全可行。
- 多語言共存:Java/Go/Python/Rust 在高併發、數據處理、微服務、系統編程等領域各有優勢,**技術選型取決於業務場景、團隊棧、生態成熟度**,而非單純「學習成本」。
問題三:Web 技術用到了哪些面向對象技術?
| 層面 | 面向對象體現 |
| 前端 JS/TS | 原型繼承 / ES6 Class、封裝 (閉包/私有字段 #)、多態 (接口/鴨子類型)、組合優於繼承 (React Hooks/Vue Composition API) |
| 前端框架 | React Component Class / Vue Component Options / Angular Dependency Injection、裝飾器模式 |
| 後端 Java | 標準 OOP:封裝/繼承/多態、設計模式 (單例、工廠、策略、模板方法)、Spring IOC/AOP 核心即對象生命周期管理與代理 |
| 後端 Go | 結構體 + 接口 (隱式實現)、組合模式、無繼承 |
| 數據庫 | ORM (Hibernate/JPA/MyBatis-Plus) 將表映射為實體對象,關聯映射體現對象關係 |
問題四:Java / JSP / Servlet 區別與關聯
| 概念 | 本質 | 角色 | 關係 |
| Java | 通用編程語言 | 編寫所有後端邏輯的基礎工具 | 基礎語言 |
| Servlet | Java 接口 (`javax.servlet.Servlet`),由容器 (Tomcat/Jetty) 管理生命周期的服務端組件 | 處理 HTTP 請求/響應的**控制器**核心 | Java 類實現 Servlet 接口 |
| JSP | 模板引擎技術,本質是** Servlet** (容器將 `.jsp` 編譯為 `.java` Servlet 類) | 動態生成 HTML 的**視圖**層 (現已被前後端分離 + 模板引擎 Thymeleaf/Freemarker 取代) | 編譯為 Servlet 類運行 |
請求處理流程圖解
瀏覽器發起 HTTP Request
↓
Tomcat (Servlet 容器)
↓
找到匹配的 Servlet (或 JSP 編譯生成的 Servlet)
↓
Servlet.service(request, response)
├─ 解析參數 (request.getParameter)
├─ 調用 Service 層業務邏輯 (純 Java 類)
├─ 操作數據庫 (JDBC/MyBatis/JPA)
├─ 封裝數據到 Request/Session 域
└─ 轉發/重定向到 JSP / 返回 JSON (RestController)
↓
JSP 執行 (實際是 Servlet _jspService)
├─ 內置對象: request, session, application, out...
├─ JSTL/EL 表達式輸出數據
└─ 生成 HTML 字符串
↓
HTTP Response (HTML/JSON) 返回瀏覽器
新手學習路線建議 (2024+)
- Java 基礎 + 集合 + 多線程 + JVM (核心硬功夫)
- Web 基礎:HTTP/HTML/CSS/JS/TypeScript/Vue 或 React (前後端分離模式)
- Spring Boot + Spring Cloud:主流微服務框架,自動配置、起步依賴、Actuator 監控
- 數據訪問:MyBatis-Plus / JPA + MySQL/PostgreSQL + Redis
- 中間件:MQ (RocketMQ/Kafka)、ES、Docker/K8s 部署
- 可選:Node.js (BFF/全棧)、Go (高性能微服務)
總結
前端源碼可讀,部署代碼不可讀是常態;JS 全棧已成主流 (Node.js/TS);Web 充滿 OOP 思想;Java 是語言,Servlet 是控制器接口,JSP 是編譯為 Servlet 的舊式模板。**拥抱前後端分離 + Spring Boot + Vue/React + TypeScript** 是當下最高效的學習與就業路徑。