這篇文章主要介紹“node前端需了解的知識點有哪些”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“node前端需了解的知識點有哪些”文章能幫助大家解決問題。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的穆棱網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
快速了解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ì)說明此流程。
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)最深的也是這塊,但大家請注意這兩個處理方式有一些的不同,不同點此處不在多說后續(xù)會更新。以下簡述下node的異步特點:
異步是通過Event Loop實現(xiàn),其中有宏任務(wù)和微任務(wù)的概念
node和JavaScript在異步的處理上有所區(qū)別
網(wǎng)上找到的一張事件循環(huán)的圖:
V8引擎
V8 是驅(qū)動 Google Chrome 的 JavaScript 引擎的名稱。 這是在使用 Chrome 瀏覽時獲取我們的 JavaScript 并執(zhí)行它的東西。
在Nodejs,v8是用來它提供了多種可調(diào)用的API
,如讀寫文件、網(wǎng)絡(luò)請求、系統(tǒng)信息等。另一方面,因為CPU
執(zhí)行的是機(jī)器碼,它還負(fù)責(zé)將JavaScript
代碼解釋成機(jī)器指令序列執(zhí)行,這部分工作是由V8引擎
完成
nodejs的內(nèi)核是V8,v8是用來將JavaScript編譯成機(jī)器可以識別的語言
事件驅(qū)動
事件驅(qū)動其實是軟件架構(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:事件模塊
后臺服務(wù)
腳本處理
服務(wù)端
在nodejs剛出現(xiàn)的幾年,對于是否將nodejs應(yīng)用在生產(chǎn)環(huán)境中,多數(shù)開發(fā)者都不看好。但是在最近幾年的實踐后,nodejs的單線程處理高并發(fā)場景的應(yīng)用已經(jīng)得到了很好的檢驗。目前在線上產(chǎn)品中已有不少基于nodejs的服務(wù)。另外nodejs也有許多類似于java spring穩(wěn)定的服務(wù)端框架,下面介紹幾款常用的
Koa:以洋蔥模型的開發(fā)模式
Express:以路由為核心的服務(wù)端nodejs框架
Fastify:一個占用資源極小,并且速度極快的框架,目前來看,它是速度最快的框架。
注:還有很多針對于不同業(yè)務(wù)類型的框架,大家有興趣的可以去了解下
工具
我們在使用vue或react全家桶進(jìn)行開發(fā)時,你有沒有去思考為何一行命令就可以運行起前端的服務(wù)?為何一行命令能夠進(jìn)行前端的編譯?為何我們謝vue代碼最終輸出了一堆js?當(dāng)我們?nèi)パ芯窟@些功能的源碼時會發(fā)現(xiàn)幾乎這些能力全是基于nodejs來開發(fā)。下面列舉我們在日常工具中nodejs的使用。
本地服務(wù):webpack啟用的本地服務(wù)插件都是基于nodejs的http模塊實現(xiàn)的
編譯打包:vue的.vue文件react的jsx或者常用的.ts文件最后如何成為js文件的,大家都覺得是webpack其實整個webpack都是基于nodejs的其中編譯文件能力就是和nodejs的fs模塊息息相關(guān)的。
關(guān)于“node前端需了解的知識點有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。