前端框架選型三大框架對比 分析 JavaScript 函式庫與元件驅動開發趨勢

me
林彥成
2022-10-08 | 3 min.
文章目錄
  1. 1. 什麼是 JavaScript 函式庫與框架?
  2. 2. JavaScript 函式庫:提升開發效率的工具包
    1. 2.1. jQuery:DOM 操作的昔日王者
  3. 3. JavaScript 框架:現代網頁開發的完整解決方案
  4. 4. 前端御三家:React、Vue、Angular 詳解
    1. 4.1. React:靈活且強大的 UI 元件函式庫
    2. 4.2. Vue:易於上手的漸進式框架
    3. 4.3. Angular:規範嚴謹的企業級開發平台
  5. 5. FAQ:前端框架選型常見問題
    1. 5.1. Q1:我是初學者,該先學哪一個框架?
    2. 5.2. Q2:使用框架對 SEO 有什麼影響?
    3. 5.3. Q3:現在還有人在使用 jQuery 嗎?

什麼是 JavaScript 函式庫與框架?

JavaScript 函式庫 (Library)框架 (Framework) 是現代前端開發的兩大核心支柱。函式庫(如 jQuery, date-fns)是一組預先撰寫好的功能工具包,開發者擁有主導權,在需要時主動呼叫特定的方法。而 框架(如 React, Vue, Angular)則是一套完整的架構解決方案,它定義了程式碼的組織方式與開發規範(如:元件化、單向資料流),通常是「框架呼叫開發者的程式碼」。選擇合適的工具能有效提升程式碼重用性、降低維護成本並優化網頁效能,是建構高品質 Web 應用的關鍵決策。


前端的 JavaScript 框架 跟函式庫百百種,究竟該怎麼選?這份 前端框架選型指南 將帶您深入了解。

其實這跟伴侶的選擇有點像,要選當下適合我們的而非一昧的追求最好,當需求與供給沒辦法對應時,勉強別人接受並不公平,勉強自己適應也很痛苦。

函式庫和框架的選擇也是,實際上遇到的問題絕對都有一種以上的解決方案,而哪種方式才是最適合的就該好好想想。

在簡單的專案使用框架只會增加複雜度,在複雜專案的使用卻讓專案變得單純

所以該不該使用 前端框架,端看各位大大遇到問題的維度和情境。

JavaScript 函式庫:提升開發效率的工具包

JavaScript 函式庫 (Library) 是開發者將常用的功能打包成能重複使用的工具包,以便和他人共享自己的解決方案。

這種開源共享函式庫的生態也加速了技術演進,JavaScript 函式庫大多應用在協助操作 DOM、AJAX、CSS,幫助開發者更有效率的撰寫網頁,例如:

  • jQuery 提供了多載像是 $(selector) 或是 $(element) 簡化 DOM 操作、AJAX 的抽象 $.ajax 和解決跨瀏覽器的語法支援。
  • date-fns 簡化了時間的處理。
  • classnames:使用 JavaScript 設定條件動態的操作 class。
  • humps:將收到的資料格式轉成駝峰式。

jQuery:DOM 操作的昔日王者

當沒有框架的時候,開發通常會用 jQuery 當套件去:

  • 快速的操作 DOM。
  • 撰寫 AJAX 相關功能。
  • 跨瀏覽器語法支援。

但當專案規模變大,管理狀態會變得困難。以取得評論為例,以下是 jQuery 寫法,當 UI 變複雜時,renderComments 函數會變得極難維護。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function getCommentsByPostId(id) {
return fetch(`/api/post/${id}`).then((res) => res.json());
}

function renderComments(post) {
post.comments.forEach((comment) => {
$("#root").append(
$(document.createElement("div"))
.append(
$(document.createElement("h3")).text(comment.userName),
$(document.createElement("p")).text(comment.comment)
)
.addClass("card")
);
});
}

$(".comments").on("click", (e) => {
getCommentsByPostId(postId).then(renderComments);
});

JavaScript 框架:現代網頁開發的完整解決方案

Web 開發框架 (Framework) 是抽象概念,是針對某些類型和需求的專案提供完整解決方案的 JavaScript 函式庫

這些解決方案能讓應用程式能夠擁有可預測性和均質化,目前看起來是一個三分天下的概念。


圖片來源: https://ithelp.ithome.com.tw/articles/10224417?sc=pt

  1. Angular:Google 推出,想得到的東西都裝在裡面了。
  2. React.js:Facebook 主導,只關注 UI,常搭配 Redux 使用。
  3. Vue.js:尤雨溪設計,透過 Vue-loader 撰寫 .vue 可以實現樣式隔離。

現代框架大致都有以下特性:

  • 元件驅動開發 (CDD)。
  • 資料流跟畫面分離。
  • 狀態管理機制。
  • 虛擬 DOM 提升效能。

以取得評論為例,React 的寫法更注重元件化與邏輯分離:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Comment({ userName, comment }) {
return (
<div className="card">
<h3>{userName}</h3>
<p>{comment}</p>
</div>
);
}

function Comments() {
const [comments, setComments] = useState([]);
const getComments = (id) => fetch(`/api/post/${id}`).then(res => res.json()).then(data => setComments(data.comments));

return (
<>
<button onClick={() => getComments(postId)}>取得評論</button>
{comments.map(c => <Comment key={c.id} {...c} />)}
</>
);
}

前端御三家:React、Vue、Angular 詳解

React:靈活且強大的 UI 元件函式庫

Facebook 於 2013 年發表。技術上 React 是一個渲染 UI 的函式庫而非框架。它提倡 單向資料流Single Source of Truth (SSOT)

  • 搭配 React Native 建立手機程式。
  • 大量使用 JSX 語法簡化開發。

附上小編學習 React 的心得傳送門:https://linyencheng.github.io/categories/#React.js

Vue:易於上手的漸進式框架

小編認為初學者最舒服的起手是 Vue。它提供了 雙向資料綁定 (Two-way Data Binding),能輕易操作資料。

  • 學習曲線最平緩。
  • Weex 整合讓 Vue 語法也能撰寫原生 App。
1
2
<input v-model="message">
<p>{{message}}</p>

Angular:規範嚴謹的企業級開發平台

由 Google 維護,是基於 TypeScript 的完整開發平台。元件由模板、樣式與類別(TS)構成。

  • 內建 Dependency Injection (DI) 模式。
  • 功能最齊全(如 PWA 支援 ng add @angular/pwa)。
  • 學習曲線最高,適合大型且開發者水平一致的團隊。

FAQ:前端框架選型常見問題

Q1:我是初學者,該先學哪一個框架?

A:如果您追求最平緩的學習曲線,Vue.js 是首選;如果您希望職缺選擇最多且生態系最豐富,React.js 是目前市場的主流;若您在大型企業且習慣強型別的嚴謹架構,Angular 則能提供最好的規範性。

Q2:使用框架對 SEO 有什麼影響?

A:傳統 SPA 框架內容是由 JS 動態渲染的,可能對爬蟲較不友善。但現代框架都提供了 SSR (Server-Side Rendering)SSG (Static Site Generation) 方案(如 Next.js 或 Nuxt.js),能完美解決 SEO 問題並提升首屏載入速度。

Q3:現在還有人在使用 jQuery 嗎?

A:有的。對於一些簡單的行銷活動頁面、或是需要微調舊有系統的樣式時,jQuery 依然非常高效。但對於「應用程式級」的開發,現代框架在狀態管理與性能上的優勢是 jQuery 難以企及的。



喜歡這篇文章,請幫忙拍拍手喔 🤣