Node.js開發(fā)的知識點(diǎn)有哪些

這篇文章主要介紹“Node.js開發(fā)的知識點(diǎn)有哪些”,在日常操作中,相信很多人在Node.js開發(fā)的知識點(diǎn)有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Node.js開發(fā)的知識點(diǎn)有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、宿州網(wǎng)絡(luò)推廣、微信小程序開發(fā)、宿州網(wǎng)絡(luò)營銷、宿州企業(yè)策劃、宿州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供宿州建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.muchs.cn

必備技能

JavaScript

對于一名前臺開發(fā)人員,在考慮掌握后臺技能時(shí),無需花費(fèi)大量的精力學(xué)習(xí)去 JavaScript。而對于完全小白,假如想要在盡可能短的時(shí)間內(nèi)掌握 Node.js,在深入前必需領(lǐng)會如下概念:

箭頭函數(shù)(Arrow Functions)

類型(Types)

表達(dá)式(Expressions)

函數(shù)(Functions)

語法結(jié)構(gòu)(Lexical Structures)

this

循環(huán)(Loops)和作用域(Scope)

數(shù)組對象(Arrays)

字面量模板(Template Literals)

嚴(yán)格模式(Strict Mode)

ES6/ES7

此外,Node.js 中涉及大量的異步編程解決,推薦掌握如下概念:

定時(shí)器(Timers)

Promises

閉包(Closures)

事件循環(huán)(Event Loop)

異步編程(Async programming)和回調(diào)(callbacks)

npm 軟件包管理

Node 軟件包管理(Node Package Manager,npm)提供當(dāng)前規(guī)模最大的注冊軟件庫,其中提供 80 多萬種軟件包。正確使用 npm,可極大地降低軟件包管理的復(fù)雜度,非常便于處理應(yīng)用開發(fā)中的依賴問題。

npm 提供三個(gè)組成模塊:

命令行接口(Command Line Interface,CLI):CLI 是大部分開發(fā)人員的首選方式,提供本機(jī)終端環(huán)境運(yùn)行。

注冊軟件庫(Registry):提供大規(guī)模開放式 JavaScript 軟件和元信息數(shù)據(jù)庫。

Web 站點(diǎn):可查找新的軟件包,并提供其它少量 npm 功能。

npm 還可管理各版本的代碼及依賴。假如使用 npx,無需下載軟件包就可運(yùn)行軟件包。

Node.js 基礎(chǔ)知識

事件發(fā)射器(Event Emitter):做為 Node.js 中的對象,Event Emitter 在操作執(zhí)行完成后發(fā)送消息,觸發(fā)特定的事件。開發(fā)人員也可編寫代碼,監(jiān)聽 Event Emitter 發(fā)出的事件。例如,一旦完成特定的前臺操作,諸如鼠標(biāo)點(diǎn)擊、按鍵和鼠標(biāo)移動等交互操作,需在后臺做進(jìn)一步解決。這時(shí)后臺的 Node.js 環(huán)境使用 EventEmitter 類,構(gòu)建相應(yīng)的事件解決模塊,用于解決操作事件。

前臺技術(shù)的升級如此迅速,在這樣的大環(huán)境下,前臺工程師保持自學(xué)能力就顯得尤其重要了。因而,“學(xué)什么”“怎樣學(xué)”就是我們要迫切處理的問題。這是我的前臺交流學(xué)習(xí)qun:前面是六零三,中間是九八五,后面是九九三。假如需要學(xué)習(xí)資料在里面下載。我做這行十多年,有問題隨時(shí)來問我,學(xué)習(xí)方法,學(xué)習(xí)效率等等問題。

回調(diào)(Callback):回調(diào)是特定任務(wù)執(zhí)行完成后調(diào)用的函數(shù),不影響其它代碼的同時(shí)執(zhí)行,避免了異步解決產(chǎn)生阻塞。鑒于 Node.js 中需解決大量的異步任務(wù),因而回調(diào)無處不在?;卣{(diào)是實(shí)現(xiàn)應(yīng)用無縫快速執(zhí)行的關(guān)鍵,其運(yùn)作機(jī)制如下圖所示:

Node.js開發(fā)的知識點(diǎn)有哪些

Buffer 類:設(shè)計(jì)用于解決原始二進(jìn)制數(shù)據(jù)的 Node.js 類,操作 V8 引擎外分配的內(nèi)存。Buffer 類實(shí)現(xiàn)為大小不可調(diào)整的整數(shù)數(shù)組,并提供一整套二進(jìn)制數(shù)據(jù)操作方法。例如,對于表示范圍在 0 到 255 之間字節(jié)值的內(nèi)存中整數(shù),使用 console.log() 輸出該 Buffer 實(shí)例,會給出一系列十六進(jìn)制值。

模塊系統(tǒng)(Module System):使用 Node.js 生態(tài)系統(tǒng)提供的模塊,可實(shí)現(xiàn)少量復(fù)雜功能。模塊是可復(fù)用的 JavaScript 代碼,實(shí)現(xiàn)特定的功能。

開發(fā)技能

版本管理系統(tǒng):掌握 git、GitHub 等的使用。開發(fā)中,應(yīng)盡量避免交叉修改代碼導(dǎo)致的更改不可逆。因而,在大型項(xiàng)目中需使用版本控制系統(tǒng)管理。要熟習(xí)版本控制系統(tǒng)的使用,開發(fā)人員應(yīng)該具有扎實(shí)的基礎(chǔ)知識。

HTTP/HTTPS 協(xié)議:一位優(yōu)秀的 Node.js 開發(fā)人員,應(yīng)具有傳輸協(xié)議數(shù)據(jù)傳輸?shù)幕A(chǔ)知識,由于每位后臺開發(fā)人員都需要深入了解 HTTP/HTTPS 的工作機(jī)制。HTTPS 使用稱為 TLS(Transport Layer Security)的加密協(xié)議加密通信。后臺環(huán)境中有大量要學(xué)習(xí)的知識點(diǎn),這對于 Web 小白是頗具難度的。簡而言之,基本的 Web 通信主要包括六種請求方法:

GET: 獲取資源的表示;

POST: 創(chuàng)立新資源;

PUT: 升級資源;

PATCH: 局部修改資源;

DELETE: 刪除 URL 指定的資源

OPTIONS: 請求指定 URL/ 服務(wù)器所支持的通信。

Web 框架

注意:本文僅列出了部分推薦 Web 框架。使用 Node.js 構(gòu)建個(gè)人項(xiàng)目時(shí),為降低學(xué)習(xí)難度,推薦從中選定一種框架,否則學(xué)習(xí)難度很高。

Express.js:提供構(gòu)建應(yīng)用所需的最小化接口和工具,非常靈活易用,大量 npm 模塊可直接插入 Expresss 使用。

Meteor.js:一種構(gòu)建 JavaScript 應(yīng)用的萬事通框架,提供內(nèi)建的 MongoDB,支持 GraphQL。運(yùn)行 meteor create myapp,就可生成一個(gè)具備 MongoDB 后臺的 HTML/JavaScript 頁面。使用 Meteor.js 可有效助降低項(xiàng)目開發(fā)時(shí)間,并簡化項(xiàng)目的維護(hù)。當(dāng)然假如只是構(gòu)建一個(gè)簡單的 Web 應(yīng)用,還是推薦使用 Express。

Sails.js:一種支持快速構(gòu)建 REST API、單頁應(yīng)用(SPA)和實(shí)時(shí) APP 的 MVC 框架。假如開發(fā)人員考慮實(shí)操少量重要技能,例如使用 WebSockets 支持實(shí)時(shí)操作,使用按商定編程(convention over configuration)方法等,推薦學(xué)習(xí) Sails.js。

Koa.js:假如開發(fā)人員考慮構(gòu)建一個(gè)經(jīng)得起時(shí)間考驗(yàn)、易于維護(hù)的魯棒應(yīng)用,Koa.js 無疑是很好的選擇。Koa 應(yīng)用實(shí)現(xiàn)為包含一組中間件函數(shù)數(shù)組的對象,其中函數(shù)以堆棧方式執(zhí)行。

Nest.js:該框架繼承了 Angular 的理念,使用 TypeScript 構(gòu)建,并且在底層使用了 Express.js,因而兼容大多數(shù) Express 中間件。Nest 提供很好的模塊化結(jié)構(gòu),代碼組織在不同模塊中,進(jìn)而構(gòu)建高效、良好擴(kuò)展的應(yīng)用。

數(shù)據(jù)庫管理

學(xué)習(xí) Node.js 需要掌握大量的后臺技能。對于一名小白,開始可選擇 MySQL 等數(shù)據(jù)庫。只有厘清后臺系統(tǒng)設(shè)計(jì)的基礎(chǔ)知識,才能根據(jù)項(xiàng)目的需求,考慮在 MySQL 等基本 SQL 數(shù)據(jù)庫之外選取后臺。

注意:關(guān)系數(shù)據(jù)庫仍然是主流。例如,在建模產(chǎn)品、類比、標(biāo)簽等時(shí)仍然主要使用關(guān)系表結(jié)構(gòu)。相似于電子表格,關(guān)系表由行和列組成。

關(guān)系數(shù)據(jù)庫管理系統(tǒng)

SQL Server:微軟的關(guān)系數(shù)據(jù)庫產(chǎn)品,支持標(biāo)準(zhǔn) ANSI SQL,也提供產(chǎn)品獨(dú)有的 SQL 實(shí)現(xiàn)。

MySQL:一款優(yōu)秀的關(guān)系數(shù)據(jù)庫管理系統(tǒng),時(shí)由 Oracle 提供的開源后臺軟件,具有按需改進(jìn)代碼的靈活性。MySQL 可很好地替代 Oracle、Microsoft SQL server 等商業(yè)數(shù)據(jù)庫產(chǎn)品。

PostgreSQL:具備大規(guī)模開發(fā)團(tuán)隊(duì)支持的開源產(chǎn)品,可運(yùn)行在 Linux、UNIX 和 Windows 等大多數(shù)主流操作系統(tǒng)上。PostgreSQL 支持絕大多數(shù)標(biāo)準(zhǔn) SQL 查詢,還提供復(fù)雜 SQL 查詢、外鍵、觸發(fā)器、事務(wù)、MVCC、流復(fù)制等特性。

MariaDB:MySQL 的改進(jìn)版,額外內(nèi)建了多種特性、安全和性能改進(jìn)。簡而言之,MariaDB 性能優(yōu)于 MySQL,推薦在大型應(yīng)用中使用 MariaDB。例如,MariaDB 的大型連接池支持超過 20 萬的并發(fā)連接,明顯優(yōu)于 MySQL。

云數(shù)據(jù)庫服務(wù)

Azure CosmosDB:一種全球分布式數(shù)據(jù)庫服務(wù),支持遠(yuǎn)程管理數(shù)據(jù)。對于大型應(yīng)用,云數(shù)據(jù)庫在擴(kuò)展型和可管理性上具備優(yōu)勢。Microsoft Azure 完全簡化了可擴(kuò)展和分布能力,在同一后臺上支持多種數(shù)據(jù)模型,就可同時(shí)用于文檔、鍵值、關(guān)系和圖模型。該服務(wù)不依賴于任何模式,因而可稱為 NOSQL 數(shù)據(jù)庫,但可使用支持 ACID 交易的查詢語言。

Amazon DynamoDB:非常適用于具備 SQL 經(jīng)驗(yàn)的客戶,提供全托管 NoSQL 數(shù)據(jù)庫服務(wù),具備高性能,可預(yù)測,擴(kuò)展性很好。DynamoDB 支持創(chuàng)立關(guān)系表,可存儲并檢索任何規(guī)模的數(shù)據(jù),提供任何服務(wù)等級的請求。

NoSQL 數(shù)據(jù)庫

MongoDB:面向文檔的 NoSQL 數(shù)據(jù)庫,適用于大規(guī)模數(shù)據(jù)存儲。相似于表是關(guān)系數(shù)據(jù)庫的基礎(chǔ),MongoDB 使用集合(Collection)和文檔(Document)。其中,文檔包含了鍵值對,是 MongoDB 的基本數(shù)據(jù)單元。集合包含一系列文檔和函數(shù),對標(biāo)關(guān)系數(shù)據(jù)庫中的表。

redis:可用于數(shù)據(jù)庫、緩存和消息代理商(Message Broker)。Redis 使用字符串、哈希、列表、集合、位圖、hyperloglog 和時(shí)空索引等數(shù)據(jù)結(jié)構(gòu),以鍵值形式存儲數(shù)據(jù)。下面舉例說明:

假設(shè)應(yīng)用必需解決受權(quán)客戶的不同操作。每次驗(yàn)證客戶身份,都必需獲取應(yīng)用中訪問權(quán)限控制模塊的受權(quán)。實(shí)現(xiàn)此類安全機(jī)制的方案很多。例如,標(biāo)準(zhǔn)的 JOSE(JavaScript 對象簽名和加密)框架可確保應(yīng)用數(shù)據(jù)的安全性。但面對多種受權(quán)時(shí),應(yīng)用同樣很難擴(kuò)展。除了發(fā)送受權(quán)列表給客戶,另一種處理方案是將客戶受權(quán)以某種形式的數(shù)據(jù)庫存儲。受權(quán)以鍵值對(也稱為令牌)形式提供,客戶必需提供鍵值進(jìn)行驗(yàn)證。

Apache Cassandra:Facebook 創(chuàng)立的高度可擴(kuò)展、高性能的分布式數(shù)據(jù)庫,設(shè)計(jì)針對物理上分布的海量數(shù)據(jù),實(shí)現(xiàn)無單點(diǎn)故障的存儲。不同于其它關(guān)系數(shù)據(jù)庫系統(tǒng),Cassandra 在分布式設(shè)計(jì)上參考了 Amazon DynamoDB,數(shù)據(jù)模型使用 Google BigTable。

LiteDB:一款超輕量級、高性能的 .NET NoSQL 嵌入數(shù)據(jù)庫,實(shí)現(xiàn)無服務(wù)器的文檔存儲。LiteDB 使用于小型的桌面應(yīng)用、Web 應(yīng)用,可根據(jù)每個(gè)客戶的每個(gè)賬戶建立一個(gè)獨(dú)立數(shù)據(jù)庫。

搜索引擎

注意:為什么需要理解搜索引擎技術(shù),下面舉例說明。假如使用谷歌搜索引擎,它本身就是一個(gè)完整的 Web 應(yīng)用。對于 Solr 和 ElasticSearch 等后臺框架,它們會對所有類型數(shù)據(jù)集創(chuàng)立索引,進(jìn)而在服務(wù)器提供搜索功能。Solr 支持百萬級客戶的搜索引擎網(wǎng)站。

ElasticSearch:一種基于 Apache Lucene 使用 Java 開發(fā)的搜索和分析引擎,實(shí)現(xiàn)海量數(shù)據(jù)的實(shí)時(shí)存儲和分析。其高性能來自于對索引而非文本的搜索,核心基于結(jié)構(gòu)化文檔,而非關(guān)系表和模式,提供豐富的 REST API 存儲和搜索數(shù)據(jù)。ElasticSearch 可認(rèn)為是一臺解決 JSON 請求并返回 JSON 數(shù)據(jù)的服務(wù)器。

Solr:提供包括字段搜索、布爾查詢、短語查詢、模糊查詢、語法檢查、自動填全等高級實(shí)時(shí)搜索功能。

 緩存

注意:緩存使用內(nèi)存中存儲文件拷貝,降低網(wǎng)絡(luò)調(diào)用,提供更快的網(wǎng)絡(luò)響應(yīng)。

內(nèi)存緩存

該技術(shù)大多數(shù)情況下使用服務(wù)器的內(nèi)存,因而通常稱為內(nèi)存緩存。服務(wù)器的一部分內(nèi)存用作緩存,存儲降低應(yīng)用網(wǎng)絡(luò)調(diào)用所需的所有數(shù)據(jù)。Node.js 提供的節(jié)點(diǎn)緩存(node-cache)和內(nèi)存緩存(memory-cache)軟件庫,很好地解決了 Node 服務(wù)器上的內(nèi)存緩存。

分布式緩存

分布式緩存將多個(gè)網(wǎng)絡(luò)內(nèi)存整合為單一的內(nèi)存數(shù)據(jù)存儲,進(jìn)而用于緩存最終數(shù)據(jù),提供對數(shù)據(jù)的快速訪問。該技術(shù)尤其適用于大規(guī)模數(shù)據(jù)和大量網(wǎng)絡(luò)調(diào)用的情況,通過在群集中增加更多的服務(wù)器實(shí)現(xiàn)緩存容量的增量擴(kuò)展和擴(kuò)容。Redis 是目前最廣為使用的 分布式內(nèi)存,推薦進(jìn)一步理解 Memcached。

Node.js開發(fā)的知識點(diǎn)有哪些

模板引擎

模板引擎支持在應(yīng)用開發(fā)中使用靜態(tài)模板文件,并在運(yùn)行時(shí)替換模板文件中的變量為實(shí)際值,生成發(fā)送給用戶的 HTML 文件。下面列出了少量廣為使用的模板引擎。

Mustache.js

Handlebars

EJS

實(shí)時(shí)通信

Socket.io:對于起步接觸后臺開發(fā)的學(xué)習(xí)者,理解 Socket.io 的實(shí)時(shí)通信需要補(bǔ)充很多知識,主要底層邏輯在用戶端和服務(wù)器之間。Socket.io 支持用戶和服務(wù)器間的雙向數(shù)據(jù)流,可視為實(shí)現(xiàn)兩個(gè)終端間實(shí)時(shí)通信的同步數(shù)據(jù)流行為。這需要用戶在瀏覽器支持 Socket.IO,并且服務(wù)器端繼承了 Socket.IO 軟件包,進(jìn)而數(shù)據(jù)才能以 JSON 請求的形式發(fā)送。

API 用戶端

REST

在 REST 提出之前,API 使用遠(yuǎn)程過程調(diào)用(RPC)開發(fā),相似于本地執(zhí)行的代碼。期間許多技術(shù)使用了相似于 RPC 的技術(shù)棧,并未從根本上處理問題,直到 REST 提出以更好的方式構(gòu)建基于 Web 的 API。

REST 架構(gòu)使用基本 HTTP 調(diào)用進(jìn)行通信,避免了使用 COBRA、COM +,RPC 等復(fù)雜方式通信。在 REST 中,調(diào)用是基于消息的,依賴 HTTP 標(biāo)準(zhǔn)形容消息。在 Node.js 生態(tài)中,推薦使用 node-rest-client 和 Axios。這兩個(gè)軟件庫為快速 Web 應(yīng)用提供了很好的支持。

GraphQL

GraphQL 可很好地替代 REST。它使用 API 優(yōu)先為用戶精確提供所請求的數(shù)據(jù),是一種靈活并且對開發(fā)人員友好的替代方案,可使用 GraphiQL IDE 部署。GraphQL 具備多項(xiàng)優(yōu)點(diǎn),包括在不影響現(xiàn)有查詢情況下增加和禁用數(shù)據(jù)域,以及支持多種方式構(gòu)建 API。

    測試    

單元測試框架

單元測試實(shí)現(xiàn)各單元和組件的隔離測試。其中,單元可以是應(yīng)用中的最小可測試代碼部分。下面列出 Node.js 的最好的單元測試框架:

Jest:一款由 Facebook 提供的測試框架,因其簡潔性而廣為使用。Jest 相比其它所有測試框架而言具備最好的文檔,支持并行測試,這意味可使用單獨(dú)進(jìn)程獨(dú)立運(yùn)行各個(gè)測試,實(shí)現(xiàn)性能最大化。

Mocha:為 Node 應(yīng)用提供原始標(biāo)準(zhǔn)的單元測試框架,支持回調(diào)等異步操作,支持使用高度可擴(kuò)展和自己設(shè)置斷言的 Promise。

Chai:支持與 Mocha 一同使用,可做為 Node.js 的 TDD/BDD 斷言庫,可匹配任何基于 JavaScript 的測試框架。

模擬測試(Mocking)

單元測試的規(guī)模越小越好,并盡可能輕量級執(zhí)行。但在少量情況下,測試對象存在對其余對象的依賴。

例如,對于需要與域服務(wù)器或者 Web Service 通信的對象,無法執(zhí)行快速、輕量級的測試,這時(shí)就需要 Mocking 測試。運(yùn)行 Mocking 測試不需要任何實(shí)際數(shù)據(jù)庫,或者是任何類型的連接,只返回給出預(yù)期結(jié)果的對象。Mocking 測試只使用少量基本對象,模擬給出實(shí)際測試結(jié)果,因而可擺脫所有局限更快地運(yùn)行測試。

到此,關(guān)于“Node.js開發(fā)的知識點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站標(biāo)題:Node.js開發(fā)的知識點(diǎn)有哪些
標(biāo)題網(wǎng)址:http://www.muchs.cn/article6/ghjjig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站制作品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、網(wǎng)頁設(shè)計(jì)公司外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)