45天帶你玩轉Node(第一天)初探Node.js

45天帶你玩轉Node

粉絲要求博主系統的寫一篇關于Node.js的學習資料,但其實我們的Node.js知識點并不少,所以博主為大家搭建了一個專欄,為了方便大家系統的學習Node.js,大家記得訂閱哦!雖然我們的Node.js還很年輕,但是他也已經有了很高的地位,讓我們盡情的暢游在Node.js的專欄中吧,希望通過此專欄我們能夠系統的將Node.js學好,它將會成為我們的一大亮點,我們可以用這款前端中的后端語言讓提升我們的價值與眼界,如今的他也已經成為面試官口中的高并發面試內容了,一起加油!

在這里插入圖片描述

初探Node.js

    • 前言
    • Node.js簡介
    • Node.js的發展史
    • Node.js 框架和工具
    • Node.js和瀏覽器
    • 總結

前言

我們熟知在一個完整的項目中我們是需要前端、后端雙技術的配合,傳統的Web應用開發主要還是以PHP+MySQL或者是Tomcat+Java,兩個系列各有優勢,前者開發方式便捷、簡單,但是總體性能并不高,對于大量請求或者即時應用來說并不合適,而后者雖然繼承了Java的高性能優勢,但對于開發者來說過于繁瑣,從而給開發者造成了一定的困難,Node.js則結合了上面兩種開主流開發方式的特點,他是一個開源和跨平臺的 JavaScript 運行時環境。作為當下的前端開發工程師,大家對Node.js已經是熟悉到極致了,畢竟我們只要使用前端框架進行開發,必不可少的就是在我們電腦上配置Node環境;

Node.js簡介

Node.js發布于2009年5月, 是一種能夠在服務器端運行 Javasoript 語言的宿主環境。該宿主環境能夠支持跨平臺功能,如 Windows 平合、Linux 平臺、Mac 平臺等。使用 Nodejs 可以在服務器端使用 JavaScript 語言完成如 PHP、Java、Perl 等語言才能完成的后端開發功能,并且完成的項目更符合軟件工程的要求。

Node.is 最初是由 Ryan Dahl 發起的開源項目,后由 Joyent 公司進行商業運營,盡管 Node.js誕生時間還不長(于2009年誕生),但是到目前為止,已經發展成相當龐大的生態系統,包含各大領域層次的 NPM 包,如MongoDB、MySQL 的連接器,以及 CSS的樣式表、模板引擎、數宇格式化等。使用這些 NPM 包可以相當快捷地完成基本應用的開發

當 Node.js 執行 I/O 操作時(比如從網絡讀取、訪問數據庫或文件系統),Node.js 將在響應返回時恢復操作(而不是阻塞線程和浪費 CPU 周期等待)
這允許 Node.js 使用單個服務器處理數千個并發連接,而??不會引入管理線程并發(這可能是錯誤的重要來源)的負擔。Node.js 具有獨特的優勢,因為數百萬為瀏覽器編寫 JavaScript 的前端開發者現在無需學習完全不同的語言,就可以編寫除客戶端代碼之外的服務器端代碼。在 Node.js 中,可以毫無問題地使用新的 ECMAScript 標準,因為你不必等待所有用戶更新他們的瀏覽器,你負責通過更改 Node.js 版本來決定使用哪個 ECMAScript 版本,你還可以通過運行帶有標志的 Node.js 來啟用特定的實驗性功能。

Node.js的發展史

其實我們的Node.js才僅僅誕生12年,相比之下我們的JavaScript已經存在了26年,前端已經33年,在技術潮流中其實一個12年并不是很長,但是我們的Node.js發展到今天已經相對很完善了,可用性也非常高!下面先讓我們了解一下Node.js的成長吧!

時間成長
2009Node.js誕生,第一版npm被創建
2010Express誕生,Socket.io誕生
2011npm 發布 1.0 版本,較大的公司(LinkedIn、Uber 等)開始采用 Node.js,hapi 誕生
2012普及速度非常快
2013第一個使用 Node.js 的大型博客平臺:Ghost,Koa 誕生
2014大分支:io.js 是 Node.js 的一個主要分支,目的是引入 ES6 支持并加快推進速度
2015Node.js 基金會 誕生,IO.js 被合并回 Node.js,npm 引入私有模塊,Node.js 4(以前從未發布過 1、2 和 3 版本)
2016leftpad 事件,Yarn 誕生,Node.js 6
2017npm 更加注重安全性,Node.js 8,HTTP/2,V8 在其測試套件中引入了 Node.js,除了 Chrome 之外,Node.js 正式成為 JS 引擎的標桿,每周 30 億次 npm 下載
2018Node.js 10,ES 模塊 .mjs 實驗支持,Node.js 11
2019Node.js 12,Node.js 13
2020Node.js 14,Node.js 15
2021Node.js 16,Node.js 17

Node.js 框架和工具

Node.js 是一個底層平臺。 為了讓開發者的工作變得輕松有趣,社區在 Node.js 上構建了數千個庫。

許多隨著時間的推移而成為流行的選擇。 以下是值得學習的部分列表:

AdonisJS:
基于 TypeScript 的全功能框架,高度關注開發者的效率、穩定和信任。Adonis 是最快的 Node.js Web 框架之一。

Egg.js:
使用 Node.js 和 Koa 構建更好的企業級框架和應用程序的框架。

Express:
提供了最簡單而強大的方式來創建 Web 服務器。它的極簡主義方法、沒有偏見、專注于服務器的核心功能,是其成功的關鍵。

Fastify:
高度專注于以最少的開銷和強大的插件架構提供最佳開發者體驗的 Web 框架。Fastify 是最快的 Node.js Web 之一 構架。

FeatherJS:
Feathers 是輕量級的網絡框架,用于使用 JavaScript 或 TypeScript 創建實時應用程序和 REST API。在幾分鐘內構建原型,在幾天內構建可用于生產的應用程序。

Gatsby:
基于 React、由 GraphQL 驅動的靜態網站生成器,具有非常豐富的插件和啟動器生態系統。

hapi:
用于構建應用程序和服務的富框架,使開發者能夠專注于編寫可重用的應用程序邏輯,而不是花時間搭建基礎設施。
koa:由 Express 背后的同一個團隊構建,旨在更簡單、更小,建立在多年知識的基礎上。新項目的誕生是為了在不破壞現有社區的情況下創建不兼容的更改。

Loopback.io:
使構建需要復雜集成的現代應用程序變得容易。
Meteor:非常強大的全棧框架,為您提供同構的方法來使用 JavaScript 構建應用程序,在客戶端和服務器上共享代碼。曾經是提供所有功能的現成工具,現在可以與前端庫 React、Vue 和 Angular 集成。也可用于創建移動應用程序。

Micro:
提供了非常輕量級的服務器來創建異步的 HTTP 微服務。

NestJS:
基于 TypeScript 的漸進式 Node.js 框架,用于構建企業級的高效、可靠和可擴展的服務器端應用程序。

Next.js:
React 框架,為您提供最佳的開發者體驗,包括生產所需的所有功能:混合靜態和服務器渲染、TypeScript 支持、智能捆綁、路由預取等。
Nx:使用 NestJS、Express、React、Angular 等進行全棧大倉開發的工具包!Nx 有助于將您的開發從構建單個應用程序的團隊擴展到多個團隊協作開發多個應用程序!

Remix:
Remix 是一個全棧 Web 框架,用于為 web 構建出色的用戶體驗。它開箱即用,提供構建現代 web 應用程序所需的一切(包括前端和后端)并將其部署到任何基于 JavaScript 的運行時環境(包括 Node.js)。

Sapper:
Sapper 是用于構建各種規模的 Web 應用程序的框架,具有優美的開發體驗和靈活的基于文件系統的路由。提供 SSR 等等!

Socket.io:
構建網絡應用的實時通信引擎。

Strapi:
Strapi 是靈活開源的 Headless CMS,讓開發者可以自由選擇他們喜歡的工具和框架,同時還允許編輯人員輕松管理和分發他們的內容。通過插件系統使管理面板和 API 可擴展,Strapi 使世界上最大的公司能夠在構建精美的數字體驗的同時加速內容交付。

Node.js和瀏覽器

瀏覽器和 Node.js 都使用 JavaScript 作為其編程語言。構建在瀏覽器中運行的應用程序與構建 Node.js 應用程序完全不同。盡管它始終是 JavaScript,但有一些關鍵的差異使體驗完全不同。

從廣泛使用 JavaScript 的前端開發人員的角度來看,Node.js 應用程序帶來了巨大的優勢:使用一種語言編寫所有東西(前端和后端)的舒適性。

你有一個巨大的機會,因為我們知道完全、深入地學習一門編程語言是多么困難,并且通過使用同一種語言在 web 上執行你的所有工作,無論是在客戶端還是在服務器上,你都處于獨特的優勢地位。

在瀏覽器中,您所做的大部分時間都是與 DOM 或其他 Web 平臺 API(如 Cookies)進行交互。 這些當然在 Node.js 中不存在。 您沒有瀏覽器提供的 document、window 和所有其他對象。在瀏覽器中,我們沒有 Node.js 通過其模塊提供的所有友好的 API,比如文件系統訪問功能。

另一個很大的不同是在 Node.js 中你可以控制環境。 除非您正在構建一個任何人都可以在任何地方部署的開源應用程序,否則您知道將在哪個版本的 Node.js 上運行該應用程序。 與瀏覽器環境(您無法奢侈地選擇訪問者將使用哪種瀏覽器)相比,這非常方便。

這意味著您可以編寫您的 Node.js 版本支持的所有現代的 ES6-7-8-9 JavaScript。

由于 JavaScript 的發展速度如此之快,但瀏覽器的升級速度可能會有點慢,有時在 web 上你會被舊的 JavaScript / ECMAScript 版本所困擾。你可以在將代碼發布到瀏覽器之前使用 Babel 將代碼轉換為 ES5 兼容,但在 Node.js 中,你不需要它。

另一個不同之處是 Node.js 使用 CommonJS 模塊系統,而在瀏覽器中我們開始看到正在實施的 ES Modules 標準。在實踐中,這意味著你暫時在 Node.js 中使用 require(),在瀏覽器中使用 import。

總結

本篇文章全部都是理論內容,主要就是讓大家對Node.js有一定的了解,以及發展史,雖然我們的Node.js還很年輕,但是他也已經有了很高的地位,讓我們盡情的暢游在Node.js的專欄中吧,希望通過此專欄我們能夠系統的將Node.js學好,它將會成為我們的一大亮點,我們可以用這款前端中的后端語言讓提升我們的價值與眼界,如今的他也已經成為面試官口中的高并發面試內容了,一起加油!我們下篇見

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

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

相關文章

VLC的一些接口

其他參考鏈接: 1、https://www.cnblogs.com/smartsensor/p/4343769.html /*Set the video scaling factor。 Zero is a special value; it will adjust the video to the outputwindow/drawable (in windowed mode) or the entire screen. */ 設置縮放系數 void li…

【轉載】 安卓版手機微信如何清理微信空間

在手機微信的使用過程中,隨著手機微信使用的時間越長,手機微信占用的空間越大,其實手機微信存儲了很多聊天記錄包括圖片、視頻等大文件信息,此時如果手機存儲空間比較緊張,可以使用微信自帶的清理工具對手機微信空間進…

45天帶你玩轉Node(第二天)走進Node.js

45天帶你玩轉Node 粉絲要求博主系統的寫一篇關于Node.js的學習資料,但其實我們的Node.js知識點并不少,所以博主為大家搭建了一個專欄,為了方便大家系統的學習Node.js,大家記得訂閱哦!雖然我們的Node.js還很年輕&#…

Windows2008安裝組件命令行工具ServerManagerCmd用法介紹

轉自:http://blog.sina.com.cn/s/blog_537de4b5010128al.html Windows2008 安裝組件服務等內容比原來復雜的多,用鼠標點來點去,既繁瑣也緩慢,所幸微軟提供了命令行工具ServerManagerCmd.exe 用法: ServerManagerCmd.exe安裝和刪除…

記錄今天登錄oracle時遇到的一個小問題--不能登錄

因為最近的項目使用的是oracle數據庫,所以我就裝了一個Windows虛擬機,在虛擬機上安裝了oracle 10g。之前一直都是掛起的,今天打開想練練的時候,發現plsql工具連接不上了。 用戶名是scott,密碼是scott,就是連…

深入Vue原理_數據響應式

歡迎各位小伙伴們! 為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網 各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有,趕快來裝備自己吧!助你面試穩操勝券,solo全場面試官 數據響應式響應式是什么如何實現數據響…

python scipy樣條插值函數大全(interpolate里interpld函數)

scipy樣條插值 scipy樣條插值1、樣條插值法是一種以可變樣條來作出一條經過一系列點的光滑曲線的數學方法。插值樣條是由一些多項式組成的,每一個多項式都是由相鄰的兩個數據點決定的,這樣,任意的兩個相鄰的多項式以及它們的導數(不包括仇階導…

EKS獨領風騷

前言 隨著公司的逐漸發展,開拓了更加多的子項目與小程序,這些都需要進行宣傳,但是管理以及部署新的應用是一個繁瑣的工程,部署麻煩而且更新業務的時候非常不方面。尤其面向用戶的時候,體驗感很差。于是想要使用docker…

Linux進程管理之ps的使用

主題Linux進程管理之ps工具的使用 一ps工具的介紹 ps: process state 進程狀態ps - report a snapshot of the current processesLinux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中 默認顯示的內容很少 [rootcentos65 ~]# psPID TTY TIME CMD2018 pts/0 …

openstack Q版部署-----安裝報錯問題

1、實例開機提示找不到磁盤Booting from Hard Disk... GRUB. 開啟 CPU 虛擬化支持。 將計算節點 nova.conf 配置修改如下即可: [libvirt] cpu_mode none virt_type qemu重啟服務 systemctl restart libvirtd.service openstack-nova-compute.service 2、錯誤: 超過…

深入Vue原理_雙向數據綁定(視圖/數據)

歡迎各位小伙伴們! 為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網 各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有,趕快來裝備自己吧!助你面試穩操勝券,solo全場面試官 文章目錄數據的變化反應到視圖命令式操…

【BZOJ3894】文理分科

已經連續很久沒有當場想出來題了。。。。 $yyb$認為這是一道傻逼題,但是我并不這么認為。。。。 題面 https://www.lydsy.com/JudgeOnline/problem.php?id3894 題解 加點:三叉戟結構的小技巧。 假設割$S$表示不學文,割$T$表示不學理。 對于一…

CodeForces 1131G. Most Dangerous Shark

題目簡述&#xff1a;從左到右依次有$n \leq 10^7$個Domino骨牌&#xff0c;高度為$h_i$&#xff0c;手動推倒他的花費為$c_i$。每個骨牌之間的距離為$1$。一個骨牌可以被向左或者向右推倒。當第$i$個骨牌被推倒時&#xff0c;他會以相同方向推倒與其距離$<h_i$的所有骨牌。…

大廠直通車【C認證】踵磅來襲

歡迎各位小伙伴們&#xff01; 首先為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網 各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有&#xff0c;趕快來裝備自己吧&#xff01;助你面試穩操勝券&#xff0c;solo全場面試官 你還在以為CSDN僅僅是一個簡簡單單…

理解JavaScript中的原型繼承(2)

兩年前在我學習JavaScript的時候我就寫過兩篇關于原型繼承的博客&#xff1a; 理解JavaScript中原型繼承 JavaScript中的原型繼承 這兩篇博客講的都是原型的使用&#xff0c;其中一篇還有我學習時的錯誤理解。今天看《Understanding Scopes》這讓我從新思考了一下原型繼承&…

深入Vue原理_全面剖析發布訂閱模式

文章目錄發布訂閱模式優化優化思路思考理解發布訂閱模式(自定義事件)收集更新函數觸發更新函數6.5 總結總結寫在最后本期推薦歡迎各位小伙伴們&#xff01; 為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網 各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有&a…

前端面試系列-JS 異步編程

并發與并行的區別&#xff1f; 并發是宏觀概念&#xff0c;我分別有任務 A 和任務 B&#xff0c;在一段時間內通過任務間的切換完成了這兩個任務&#xff0c;這種情況就可以稱之為并發。并行是微觀概念&#xff0c;假設 CPU 中存在兩個核心&#xff0c;那么我就可以同時完成任務…

web前端發展歷程

總覽前端發展史前言瀏覽器的發展史走進前端HTMLCSSjavaScript小前端時代大前端時代寫在最后前言 目前在IT公司中前端的崗位越來越成為不可或缺的&#xff0c;前端的地位也愈見明顯&#xff0c;很多學校已經體系的傳授前端課程&#xff0c;眾多培訓機構也將前端知識作為了主流課…

修改wordpress上傳文件大小限制

1. 登陸wordpress使用的數據庫&#xff0c;切換到使用的database 2. 操作如下&#xff1a; > select meta_key from wp_sitemeta; > select meta_key,meta_value from wp_sitemeta where meta_keyfileupload_maxk; 修改為20M: > update wp_sitemeta set meta_value204…

php的符號的排序大小

轉載于:https://www.cnblogs.com/cjjjj/p/10433334.html