溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

node前端需了解的知識點(diǎn)有哪些

發(fā)布時間:2023-04-13 11:22:07 來源:億速云 閱讀:104 作者:iii 欄目:web開發(fā)

這篇文章主要介紹“node前端需了解的知識點(diǎn)有哪些”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“node前端需了解的知識點(diǎn)有哪些”文章能幫助大家解決問題。

基本特點(diǎn)

快速了解nodejs可以從以下幾個方面來看看:node的模塊概念(ECMAScript2015已支持前端很容易理解),V8引擎(和瀏覽器同樣),異步操作(基于v8與瀏覽器處理略有不同),事件驅(qū)動(基于v8與瀏覽器略有不同),node基礎(chǔ)API。

模塊

nodejs的模塊大概可以分為三種:核心模塊 第三方模塊 自定義模塊。每種模塊的加載優(yōu)先級都不相同。

  • 核心模塊:nodejs內(nèi)置模塊,可以理解為nodejs的基礎(chǔ)API,例如我們常用的path os fs等等。這些模塊也是我們nodejs與服務(wù)器交互的基礎(chǔ)。

  • 第三方模塊:nodejs包管理工具平臺安裝的npm包。

  • 自定義模塊:這個通常值的是我們自己定義的文件模塊。

模塊的加載編譯

  • 文件解析路徑:檢查是否存在緩存 =》檢查是否為核心模塊=》檢查擴(kuò)展名=》解析執(zhí)行(根據(jù)不同后綴名)

//檢查fs內(nèi)存中的緩存是否存在如果不存在則加載fs模塊
let fs = require("fs")
//檢查fs內(nèi)存中的緩存(無)=》檢查是否核心模塊=》檢查擴(kuò)展名
let demo = require("./demo")

  • 緩存優(yōu)先原則:由文件解析路徑我們可以看出nodejs會先檢查內(nèi)存中的緩存是否存在,如果存在則加載緩存。

  • 模塊編譯:本文不做說明,下一章節(jié)會詳細(xì)說明此流程。

規(guī)范

JavaScript模塊發(fā)展的概念基本如: "script"引入=> 作用域函數(shù)=》自執(zhí)行函數(shù)=〉 Commonjs(AMD)。在nodejs中的模塊主要采用commonjs規(guī)范,如下所示。

  • 每個文件就是一個模塊, 有自己的作用域。

  • 每個文件中定義的變量、函數(shù)、類都是私有的,對其它文件不可見

  • 每個模塊內(nèi)部可以通過 exports 或者 module.exports 對外暴露接口

  • 每個模塊通過 require 加載另外的模塊

我們在nodejs中常用require exports module.exports都是基于Commonjs來的。

異步操作

異步操作對于前端開發(fā)很易了解,我們在JavaScript中到處都充斥的異步操作,回調(diào)函數(shù),promise,setTimeout這些都是異步相關(guān)的操作,最基礎(chǔ)的DOM渲染也是異步的,nodejs和JavaScript關(guān)聯(lián)最深的也是這塊,但大家請注意這兩個處理方式有一些的不同,不同點(diǎn)此處不在多說后續(xù)會更新。以下簡述下node的異步特點(diǎn):

  • 異步是通過Event Loop實(shí)現(xiàn),其中有宏任務(wù)和微任務(wù)的概念

  • node和JavaScript在異步的處理上有所區(qū)別

網(wǎng)上找到的一張事件循環(huán)的圖:node前端需了解的知識點(diǎn)有哪些

V8引擎

  • V8 是驅(qū)動 Google Chrome 的 JavaScript 引擎的名稱。 這是在使用 Chrome 瀏覽時獲取我們的 JavaScript 并執(zhí)行它的東西。

  • 在Nodejs,v8是用來它提供了多種可調(diào)用的API,如讀寫文件、網(wǎng)絡(luò)請求、系統(tǒng)信息等。另一方面,因?yàn)?code>CPU執(zhí)行的是機(jī)器碼,它還負(fù)責(zé)將JavaScript代碼解釋成機(jī)器指令序列執(zhí)行,這部分工作是由V8引擎完成

node前端需了解的知識點(diǎn)有哪些

nodejs的內(nèi)核是V8,v8是用來將JavaScript編譯成機(jī)器可以識別的語言

事件驅(qū)動

事件驅(qū)動其實(shí)是軟件架構(gòu)中一種常用的架構(gòu)模式,簡單的說就是通過創(chuàng)建(注冊)事件并監(jiān)聽這個事件,根據(jù)事件的狀態(tài)來進(jìn)行處理。nodejs中大部分核心 API 都是圍繞慣用的異步事件驅(qū)動架構(gòu)構(gòu)建的,另外node中的核心模塊events可以用來自定義創(chuàng)建事件。

常用API

  • fs:常用于文件的查看,編輯,創(chuàng)建等操作

  • http:網(wǎng)絡(luò)的關(guān)鍵模塊

  • socket:socket網(wǎng)絡(luò)通信

  • events:事件模塊

應(yīng)用場景

  • 后臺服務(wù)

  • 腳本處理

服務(wù)端

在nodejs剛出現(xiàn)的幾年,對于是否將nodejs應(yīng)用在生產(chǎn)環(huán)境中,多數(shù)開發(fā)者都不看好。但是在最近幾年的實(shí)踐后,nodejs的單線程處理高并發(fā)場景的應(yīng)用已經(jīng)得到了很好的檢驗(yàn)。目前在線上產(chǎn)品中已有不少基于nodejs的服務(wù)。另外nodejs也有許多類似于java spring穩(wěn)定的服務(wù)端框架,下面介紹幾款常用的

  • Koa:以洋蔥模型的開發(fā)模式

  • Express:以路由為核心的服務(wù)端nodejs框架

  • Fastify:一個占用資源極小,并且速度極快的框架,目前來看,它是速度最快的框架。

注:還有很多針對于不同業(yè)務(wù)類型的框架,大家有興趣的可以去了解下

工具

我們在使用vue或react全家桶進(jìn)行開發(fā)時,你有沒有去思考為何一行命令就可以運(yùn)行起前端的服務(wù)?為何一行命令能夠進(jìn)行前端的編譯?為何我們謝vue代碼最終輸出了一堆js?當(dāng)我們?nèi)パ芯窟@些功能的源碼時會發(fā)現(xiàn)幾乎這些能力全是基于nodejs來開發(fā)。下面列舉我們在日常工具中nodejs的使用。

  • 本地服務(wù):webpack啟用的本地服務(wù)插件都是基于nodejs的http模塊實(shí)現(xiàn)的

  • 編譯打包:vue的.vue文件react的jsx或者常用的.ts文件最后如何成為js文件的,大家都覺得是webpack其實(shí)整個webpack都是基于nodejs的其中編譯文件能力就是和nodejs的fs模塊息息相關(guān)的。

關(guān)于“node前端需了解的知識點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI