Node.js 簡(jiǎn)介
Node.js 是一個(gè)開(kāi)源和跨平臺(tái)的 JavaScript 運(yùn)行時(shí)環(huán)境。它是幾乎任何類(lèi)型的項(xiàng)目的流行工具!
Node.js 在瀏覽器之外運(yùn)行 Google Chrome 的核心 V8 JavaScript 引擎。這使得 Node.js 非常高效。
Node.js 應(yīng)用程序在單個(gè)進(jìn)程中運(yùn)行,無(wú)需為每個(gè)請(qǐng)求創(chuàng)建新線程。 Node.js 在其標(biāo)準(zhǔn)庫(kù)中提供了一組異步 I/O 原語(yǔ),可防止 JavaScript 代碼阻塞,通常,Node.js 中的庫(kù)是使用非阻塞范例編寫(xiě)的,使阻塞行為成為例外而不是常態(tài)。
當(dāng) Node.js 執(zhí)行 I/O 操作時(shí),例如從網(wǎng)絡(luò)讀取、訪問(wèn)數(shù)據(jù)庫(kù)或文件系統(tǒng),而不是阻塞線程并浪費(fèi) CPU 周期等待,Node.js 將在響應(yīng)返回時(shí)恢復(fù)操作。
這允許 Node.js 處理與單個(gè)服務(wù)器的數(shù)千個(gè)并發(fā)連接,而不會(huì)引入管理線程并發(fā)的負(fù)擔(dān),這可能是錯(cuò)誤的重要來(lái)源。
Node.js 具有獨(dú)特的優(yōu)勢(shì),因?yàn)閿?shù)百萬(wàn)為瀏覽器編寫(xiě) JavaScript 的前端開(kāi)發(fā)人員現(xiàn)在能夠在編寫(xiě)客戶(hù)端代碼的同時(shí)編寫(xiě)服務(wù)器端代碼,而無(wú)需學(xué)習(xí)完全不同的語(yǔ)言。
在 Node.js 中,可以毫無(wú)問(wèn)題地使用新的 ECMAScript 標(biāo)準(zhǔn),因?yàn)槟槐氐却杏脩?hù)更新他們的瀏覽器 - 您可以通過(guò)更改 Node.js 版本來(lái)決定使用哪個(gè) ECMAScript 版本,您還可以通過(guò)運(yùn)行帶有標(biāo)志的 Node.js 來(lái)啟用特定的實(shí)驗(yàn)功能。
npm 以其簡(jiǎn)單的結(jié)構(gòu)幫助 Node.js 的生態(tài)系統(tǒng)激增,現(xiàn)在 npm 注冊(cè)表托管了超過(guò) 1,000,000 個(gè)開(kāi)源包,您可以免費(fèi)使用。
Node.js 最常見(jiàn)的 Hello World 示例是 Web 服務(wù)器:
此代碼首先包含 Node.jshttp模塊。Node.js 有一個(gè)很棒的標(biāo)準(zhǔn)庫(kù),包括一流的網(wǎng)絡(luò)支持。http的createServer()方法創(chuàng)建一個(gè)新的 HTTP 服務(wù)器并返回它。服務(wù)器設(shè)置為偵聽(tīng)指定的端口和主機(jī)名。當(dāng)服務(wù)器準(zhǔn)備好時(shí),回調(diào)函數(shù)被調(diào)用,在這種情況下通知我們服務(wù)器正在運(yùn)行。
每當(dāng)收到新請(qǐng)求時(shí),都會(huì)調(diào)用request事件,提供兩個(gè)對(duì)象:一個(gè)請(qǐng)求(一個(gè)http.IncomingMessage對(duì)象)和響應(yīng)(一個(gè)http.ServerResponse對(duì)象)。這兩個(gè)對(duì)象對(duì)于處理 HTTP 調(diào)用至關(guān)重要。第一個(gè)提供請(qǐng)求詳細(xì)信息。在這個(gè)簡(jiǎn)單的示例中,沒(méi)有使用它,但您可以訪問(wèn)請(qǐng)求標(biāo)頭和請(qǐng)求數(shù)據(jù)。第二個(gè)用于將數(shù)據(jù)返回給調(diào)用者。
在這種情況下:
we set the statusCode property to 200, to indicate a successful response.
We set the Content-Type header:
and we close the response, adding the content as an argument toend():
Node.js 是一個(gè)低級(jí)平臺(tái)。為了使開(kāi)發(fā)人員的工作變得簡(jiǎn)單和令人興奮,社區(qū)在 Node.js 上構(gòu)建了數(shù)千個(gè)庫(kù)。
隨著時(shí)間的推移,其中許多被確立為流行的選擇。以下是值得學(xué)習(xí)的非全面列表:
AdonisJS:一個(gè)基于 TypeScript 的全功能框架,高度關(guān)注開(kāi)發(fā)人員的人體工程學(xué)、穩(wěn)定性和信心。 Adonis 是最快的 Node.js Web 框架之一。
Egg.js:使用 Node.js 和 Koa 構(gòu)建更好的企業(yè)框架和應(yīng)用程序的框架。
Express:它提供了一種創(chuàng)建 Web 服務(wù)器的最簡(jiǎn)單但功能強(qiáng)大的方法。其極簡(jiǎn)主義的方法,沒(méi)有意見(jiàn),專(zhuān)注于服務(wù)器的核心功能,是其成功的關(guān)鍵。
Fastify:一個(gè)高度專(zhuān)注于以最少的開(kāi)銷(xiāo)和強(qiáng)大的插件架構(gòu)提供最佳開(kāi)發(fā)人員體驗(yàn)的 Web 框架。 Fastify 是最快的 Node.js Web 框架之一。
FeatherJS:Feathers 是一個(gè)輕量級(jí)的 Web 框架,用于使用 JavaScript 或 TypeScript 創(chuàng)建實(shí)時(shí)應(yīng)用程序和 REST API。在幾分鐘內(nèi)構(gòu)建原型,在幾天內(nèi)構(gòu)建生產(chǎn)就緒的應(yīng)用程序。
Gatsby:基于React,GraphQL驅(qū)動(dòng)的靜態(tài)站點(diǎn)生成器,具有非常豐富的插件和啟動(dòng)器生態(tài)系統(tǒng)。
hapi:用于構(gòu)建應(yīng)用程序和服務(wù)的豐富框架,使開(kāi)發(fā)人員能夠?qū)W⒂诰帉?xiě)可重用的應(yīng)用程序邏輯,而不是花時(shí)間構(gòu)建基礎(chǔ)設(shè)施。
koa:它由 Express 背后的同一團(tuán)隊(duì)構(gòu)建,旨在更簡(jiǎn)單、更小,建立在多年的知識(shí)之上。新項(xiàng)目的誕生是為了在不破壞現(xiàn)有社區(qū)的情況下創(chuàng)建不兼容的更改。
Loopback.io:使構(gòu)建需要復(fù)雜集成的現(xiàn)代應(yīng)用程序變得容易。
Meteor:一個(gè)非常強(qiáng)大的全棧框架,為您提供同構(gòu)的方法來(lái)使用 JavaScript 構(gòu)建應(yīng)用程序,在客戶(hù)端和服務(wù)器上共享代碼。曾經(jīng)是提供一切的現(xiàn)成工具,現(xiàn)在與前端庫(kù)React、Vue和Angular。也可用于創(chuàng)建移動(dòng)應(yīng)用程序。
Micro:它提供了一個(gè)非常輕量級(jí)的服務(wù)器來(lái)創(chuàng)建異步 HTTP 微服務(wù)。
NestJS:基于 TypeScript 的漸進(jìn)式 Node.js 框架,用于構(gòu)建企業(yè)級(jí)高效、可靠和可擴(kuò)展的服務(wù)器端應(yīng)用程序。
Next.js:React框架,為您提供最佳的開(kāi)發(fā)人員體驗(yàn)以及生產(chǎn)所需的所有功能:混合靜態(tài)和服務(wù)器渲染、TypeScript 支持、智能捆綁、路由預(yù)取等。
Nx:使用 NestJS、Express、React、Angular等等! Nx 有助于將您的開(kāi)發(fā)從一個(gè)團(tuán)隊(duì)構(gòu)建一個(gè)應(yīng)用程序擴(kuò)展到多個(gè)團(tuán)隊(duì)協(xié)作開(kāi)發(fā)多個(gè)應(yīng)用程序!
Remix:Remix 是一個(gè)全棧 Web 框架,用于為 Web 構(gòu)建出色的用戶(hù)體驗(yàn)。它開(kāi)箱即用,包含構(gòu)建現(xiàn)代 Web 應(yīng)用程序(前端和后端)并將它們部署到任何基于 JavaScript 的運(yùn)行時(shí)環(huán)境(包括 Node.js)所需的一切。
Sapper:Sapper 是一個(gè)用于構(gòu)建各種規(guī)模的 Web 應(yīng)用程序的框架,具有優(yōu)美的開(kāi)發(fā)體驗(yàn)和靈活的基于文件系統(tǒng)的路由。提供 SSR 等等!
Socket.io:構(gòu)建網(wǎng)絡(luò)應(yīng)用的實(shí)時(shí)通信引擎。
Strapi:Strapi 是一個(gè)靈活的開(kāi)源無(wú)頭 CMS,讓開(kāi)發(fā)人員可以自由選擇自己喜歡的工具和框架,同時(shí)還允許編輯者輕松管理和分發(fā)他們的內(nèi)容。通過(guò)插件系統(tǒng)使管理面板和 API 可擴(kuò)展,Strapi 使世界上最大的公司能夠加速內(nèi)容交付,同時(shí)構(gòu)建美妙的數(shù)字體驗(yàn)。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢(xún)專(zhuān)線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹(shù)莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專(zhuān)線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專(zhuān)線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)