如何理解Node.js?NPM?Yarn?Vue?React?

一、背景

對后端技術棧更熟悉,對前端技術棧不了解,希望通過前后端的技術棧進行對比,可以更直觀地了解前端技術棧。

二、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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43483.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43483.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xterminal工具的安裝與使用體驗

Xterminal工具的安裝與使用體驗 一、Xterminal簡介二、Xterminal核心特性三、Xterminal使用場景四、Xterminal下載地址五、Xterminal的基本使用5.1 設置倉庫密碼5.2 SSH連接5.3 Windows遠程桌面5.4 筆記功能5.5 AI工具 六、總結 一、Xterminal簡介 Xterminal是一款專為開發者設…

【大模型】智能體探秘:從概念到實踐的全面指南

智能體探秘:從概念到實踐的全面指南 引言一、智能體的基本概念二、智能體的類型三、設計智能體的步驟四、智能體設計實例:迷宮求解智能體五、智能體的評估與優化六、智能體的未來方向結語 引言 在人工智能領域,智能體(Agent&…

【Linux進階】vim的用法

1.什么是vi/vim? 簡單來說,vi是老式的文本編輯器,不過功能已經很齊全了,但是還是有可以進步的地方。vim則可以說是程序開發者的一項很好用的工具,就連 vim的官方網站( http://www.vim.org)自己也說vim是一…

獨享代理VS共享代理,新手選擇攻略

隨著互聯網的廣泛普及和應用,涉及網絡隱私、數據安全和網絡訪問控制的問題變得越來越重要。代理服務器作為一種常見的網絡工具,可以在跨境電商、海外社媒、SEO投放、網頁抓取等領域發揮作用,實現匿名訪問并加強網絡安全。在代理服務器類別中&…

Nginx在線安裝與啟動

Nginx在線安裝與啟動 系統環境:中科方德桌面操作系統 3.1 內核: SMP CDOS 4.9.25-11cdos44 (2019-12-20) x86_64 GNU/Linux 使用連接工具:FinalShell3.9.5.7 1、下載nginx sudo apt-get update2、安裝命令 sudo apt-get install nginx安裝…

面向對象編程在Perl中的實現:解鎖Perl的OOP潛力

面向對象編程在Perl中的實現:解鎖Perl的OOP潛力 Perl作為一種多范式編程語言,支持過程式編程、面向對象編程(OOP)以及函數式編程等多種編程范式。盡管Perl在過程式編程方面非常強大,但在面向對象編程方面同樣具有獨特…

occ geo

隨筆 - 12 文章 - 18 評論 - 117 閱讀 - 13萬 opencascade造型引擎功能介紹 現今的CAD 系統大多通常都基于CAD 系統提供的二次開發包,用戶根據要求定制符合自己要求的功能。AutoCAD就提供了AutoLISP、ADS 等都是比較通用的開發工具包。UG 也提供了多種二次開發…

【力扣: 15題: 三數之和】

15題: 三數之和 給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k 且 j ! k ,同時還滿足 nums[i] nums[j] nums[k] 0 。請 你返回所有和為 0 且不重復的三元組。 注意: 答案中不可以包含重復的三元組。 …

小米攝像頭黃燈常亮,小米攝像頭不好用了刷機

我是MJSXJ05CM型號 一不小心更新了系統結果就不好用了,這種東西真是要小心,一不小心更新不成就成磚頭了。 我按下面方法試了不好用,但是下載鏈接很多收藏一下!某種程度上說如果服務端故意發布一個錯誤鏡像會導致很多攝像頭變成磚頭&#xff0…

名企面試必問30題(二十七)——你能為公司帶來什么呢?

回答一: “首先,我具備扎實的軟件測試專業知識和豐富的實踐經驗。我能夠運用各種測試方法和工具,確保公司產品的質量,降低產品上線后的風險。 其次,我善于發現問題和解決問題。在測試過程中,我不僅能找出軟…

Pytest中的鉤子函數

在pytest框架中,鉤子函數(Hooks)是一種強大的機制,允許用戶擴展和定制pytest的行為。鉤子函數在pytest的測試執行生命周期的特定點上被調用,提供了一種靈活的方式來修改或增強測試過程的各個方面。以下是對pytest鉤子函…

桌面弄一個透明的記事本怎么弄?電腦桌面透明記事本

每次坐在電腦前,我總會被桌面上密密麻麻的圖標和文件弄得眼花繚亂。多么希望能有一個透明的記事本,既能隨時記錄我的想法和任務,又不會遮擋我桌面上的其他內容。 有一天,我偶然發現了透明記事本工具。它不僅解決了我的記事本需求…

cf 7.9 div3

AProblem - A - Codeforces ac代碼 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll N1e5; using namespace std;int main() {IOS;int t;cin>>t;while(t--){int sum,ansINT16_MAX;int a[3];for…

RK3588 Android12實現UVC輸出功能詳解

首先需要在相關部分添加uvc的功能&#xff0c;這里參考一下&#xff1a;rockchip rk3588添加uvc及uvc,adb的復合設備_uvc.gs6-CSDN博客 setprop sys.usb.config none;setprop sys.usb.config uvc 或者setprop sys.usb.config none;setprop sys.usb.config uvc,adb 使rk3588 進…

Python實現動態銀河系:模擬旋轉的銀河動畫

文章目錄 引言準備工作前置條件 代碼實現與解析導入必要的庫初始化Pygame定義星系類主循環 完整代碼 引言 銀河系的旋轉動畫是一個迷人且富有挑戰性的項目。通過模擬星系的旋轉&#xff0c;我們可以更好地理解天文學現象&#xff0c;并創造出視覺上令人驚嘆的效果。在這篇博客…

jar 生成的jar包去掉-plain后綴

問題&#xff1a; 使用gradle8.6版本的&#xff0c; jar {enabled(true)manifestContentCharset utf-8metadataCharset utf-8exclude(**/**Application.class, **/application**,**/bootstrap**) } 生成的jar&#xff1a; staff-core-1.2.2-SNAPSHOT-plain.jar 多了-p…

springboot考研培訓機構管理系統-計算機畢業設計源碼16042

目錄 摘要 1 緒論 1.1 選題背景與意義 1.2國內外研究現狀 1.3論文結構與章節安排 2系統分析 2.1 可行性分析 2.2 系統流程分析 2.2.1系統開發流程 2.2.2 用戶登錄流程 2.2.3 系統操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 刪除信息流程 2.3 系統功能…

Python中的類和對象:如何定義一個類以及如何創建類的實例(對象)

在Python中&#xff0c;定義類是通過關鍵字class實現的&#xff0c;而創建類的實例&#xff08;也稱為對象&#xff09;則是通過調用這個類來實現的。下面是一個簡單的例子來展示如何定義一個類以及如何創建這個類的實例。 定義類 定義類時&#xff0c;你需要指定類名&#x…

Linux——網絡編程——UDP

網絡編程之 UDP 用戶數據報 1、特性&#xff1a; 無鏈接 不可靠 大數據 2、框架&#xff1a; C/S模式 server&#xff1a;socket() >bind()>recvfrom()>close() client&#xff1a;socket() >bind()>sendto() >close() 注意&#xff1a;socket(&…

編譯libmp3lame支持SSE指令

碰到的編譯錯誤如下&#xff1a; lame/libmp3lame/vector/xmm_quantize_sub.c:72:18: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]72 | const __m128 vec_fabs_mask _mm_loadu_ps(&fabs_mask._float[0]);| ^~~~~~~~…