一、背景
對后端技術棧更熟悉,對前端技術棧不了解,希望通過前后端的技術棧進行對比,可以更直觀地了解前端技術棧。
二、Node.js
Node.js 是一個基于 Chrome V8 JavaScript 引擎的 JavaScript 運行環境。它使得 JavaScript 可以在服務器端運行,而不僅僅是在瀏覽器中。
Node.js 可以類比為 Java 的 JRE(Java Runtime Environment),但它們有一些關鍵的區別和相似之處。
1、相同
(1)運行環境
Node.js:是一個 JavaScript 運行環境,允許你在服務器端運行 JavaScript 代碼。
JRE:是一個 Java 運行環境,允許你運行 Java 應用程序。
(2)包含的組件
Node.js:包含了 V8 JavaScript 引擎(用于解析和執行 JavaScript 代碼)、內置的庫(如 http、fs 等)和一些核心模塊。
JRE:包含了 Java 虛擬機(JVM,用于解析和執行 Java 字節碼)、核心類庫(如 java.lang、java.util 等)和一些其他組件。
(3)跨平臺
Node.js:可以在多個操作系統上運行,包括 Windows、macOS 和 Linux。
JRE:同樣可以在多個操作系統上運行,包括 Windows、macOS 和 Linux。
2、區別
(1)語言
Node.js:運行 JavaScript 代碼。
JRE:運行 Java 代碼。
(2)用途
Node.js:最初設計用于服務器端編程,特別適合 I/O 密集型應用,如 Web 服務器、實時應用和 API 服務。
JRE:用于運行各種 Java 應用程序,包括桌面應用、服務器端應用和嵌入式系統。
(3)生態系統
Node.js:依賴于 npm(Node Package Manager)或Yarn來管理和安裝第三方庫和模塊。
JRE:依賴于 Maven、Gradle 等工具來管理和安裝第三方庫和模塊。
(4)執行模型
Node.js:采用單線程、事件驅動的非阻塞 I/O 模型,適合處理大量并發請求。
JRE:多線程模型,適合 CPU 密集型任務和復雜的并發控制。
三、NPM和Yarn
npm和Yarn都是Node.js的包管理器,類似于Maven和Gradle都是JRE的包管理器。
1、NPM
npm(Node Package Manager)是 Node.js 的默認包管理器。它允許開發者安裝、共享和管理 JavaScript 代碼包(即模塊)。
(1)包管理
npm 提供了一個巨大的開源包生態系統,開發者可以輕松安裝和使用他人編寫的模塊。
(2)版本管理
npm 允許你管理項目依賴的版本,以確保項目的穩定性。
(3)腳本運行
npm 可以用來運行項目中的腳本,例如構建、測試和啟動項目。
2、Yarn
Yarn 是一個由 Facebook、Google、Exponent 和 Tilde 聯合開發的包管理器,旨在解決 npm 的一些問題。它與 npm 類似,但提供了一些增強功能。
(1)快速
Yarn 使用并行安裝,速度比 npm 更快。
(2)確定性依賴
Yarn 使用 yarn.lock 文件來確保每次安裝的依賴版本一致,避免 "works on my machine" 問題。
(3)離線模式
Yarn 可以在沒有網絡連接的情況下安裝依賴,只要它們之前已經被安裝過一次。
?四、Ember、Angular、Vue、React
JavaScript 框架是為了提供更好的開發體驗。它們沒有給 JavaScript 帶來新的功能;但它們使你可以更輕松地使用 JavaScript 來構建現代的 web。
目前公認的“四大框架”是React、Vue.js、Angular、Ember。
1、Ember
Ember 于 2011 年 12 月發布,最初作為 SproutCore 項目的延續而開始。比其新式的替代品(例如 React 和 Vue),作為老框架,它的用戶人數要少得多。但因其穩定性、社區支持以及編程原則都非常良好,它仍然享有很高的知名度。
2、Angular
Angular 是一個開源 Web 應用程序框架,正式發布于 2016 年 9 月 14 日。它由構建 AngularJS 的團隊完全重寫,并由 Google 的 Angular 團隊社區共同領導。
Angular 是一種基于組件的框架,使用聲明式的 HTML 模板。在應用構建時,框架的編譯器將 HTML 模板轉換為優化好的 JavaScript 指令,這一過程對開發者是透明的。Angular 使用 TypeScript,它是 JavaScript 的超集。
3、Vue
Evan You(尤雨溪)在 2014 年第一次發布 Vue 。Vue 是“四大框架”中最年輕的,但在最近,它的人氣迅速上升。
Vue,就像 AngularJS,用它自己的代碼拓展了 HTML。除此之外,它還主要依賴于現代的、標準化的 JavaScript。
4、React
Facebook 在 2013 年發布了 React。在當時 React 已經被用于 Facebook 內部用來解決許多問題。嚴格來說 React 本身并不是框架,而是一個用來渲染用戶界面組件的庫。React 被用來組合其他用來構建應用的庫——React 和 React Native 讓開發者能夠用 JavaScript 構建移動應用;React 和 ReactDOM 使他們能夠被用來制作 web 應用程序等。
因為 React 和 ReactDOM 被經常放在一起使用,通俗地講,React 可以被理解為是一個 JavaScript 框架。當你通讀了這個模塊時,我們將使用這種口語化的理解進行描述。
React 用類似 HTML 的語法的 JSX 拓展了 JavaScript。
參考:
https://developer.mozilla.org/zh-CN/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction#ember