張釗源 劉曉瑜 鞠玉霞
【摘? 要】通過對Node.js建立后端服務(wù)器的介紹,引出其建站優(yōu)勢與Web前端的契合特點(diǎn)。
【Abstract】Through the introduction of Node.js back-end server, this paper draws out its advantages in station construction and the characteristics of Web front-end.
【關(guān)鍵詞】JavaScript;Node.js;Express框架
【Keywords】JavaScript; Node.js; Express framework
【中圖分類號】TP311.5;TP393.0? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻(xiàn)標(biāo)志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【文章編號】1673-1069(2020)08-0193-02
1 引言
全棧開發(fā)離不開服務(wù)器的搭建,近年來Node.js以其高密度開發(fā)的優(yōu)點(diǎn)在服務(wù)器開發(fā)中嶄露頭角?;镜木W(wǎng)站開發(fā)能力包含服務(wù)端、前端、運(yùn)維部署等。本文引進(jìn)一簡單實(shí)例來闡述利用Node.js開發(fā)Web服務(wù)器的基本思路。
2 Node.js功能概述
首先,Node中的js有讀寫文件的操作能力,彌補(bǔ)了瀏覽器不能直接操作本地文件的缺點(diǎn)。通過引入fs核心模塊,如使用require方法加來載fs核心模塊,此外Node還提供了核心模塊http,來創(chuàng)建服務(wù)器。Node.js可用于構(gòu)建不同類型的應(yīng)用程序,如命令行應(yīng)用程序、Web應(yīng)用程序、實(shí)時聊天應(yīng)用程序、REST API服務(wù)器等。但是,它主要用于構(gòu)建網(wǎng)絡(luò)程序,如Web服務(wù)器。值得注意的是,response可以用來給客戶端發(fā)送相應(yīng)數(shù)據(jù),可以使用多次但最后一次需要使用end來結(jié)束響應(yīng)。
3 信息遞送提交
3.1 初步實(shí)現(xiàn)Apache
啟動節(jié)點(diǎn)外殼,打開命令提示符或終端,然后鍵入節(jié)點(diǎn)。然后創(chuàng)建請求:Server,監(jiān)聽Server的請求并設(shè)置請求處理函數(shù)(請求、處理、響應(yīng)、一個請求對應(yīng)一個響應(yīng),若響應(yīng)結(jié)束則不可以重復(fù)發(fā)送),之后實(shí)現(xiàn)目錄列表,渲染來減輕前端壓力(替換字符串如data=replace('---','替換名稱')減輕了前段的壓力),讀取目的路徑的相關(guān)文件并在客戶端顯示,可以在HTML5里面替換相關(guān)名稱。最后制作留言表回饋,哪些資源可以被用戶訪問,哪些不能,可以自由控制,為了統(tǒng)一管理靜態(tài)資源,將相關(guān)的資源全部放進(jìn)某一文件夾里面。
在瀏覽器中,全局范圍是窗口。在Node中,全局對象代表全局范圍。要在全局范圍內(nèi)添加某些內(nèi)容,需要使用export或module.export將其導(dǎo)出。以相同的方式,使用require導(dǎo)入模塊以從全局范圍訪問它。關(guān)于用戶提交的內(nèi)容,注意雖然內(nèi)容變化但是形式不會變化,所以只需要判斷/pinglun,來判斷用戶的表單請求來了沒有。emit函數(shù)會引發(fā)指定的事件。 參數(shù)一是事件的名稱,為字符串,然后為參數(shù)??梢允褂昧銈€或多個參數(shù)來發(fā)出事件??梢栽诤瘮?shù)中為自定義事件指定任何名稱。
3.2 Express框架
不再需要if判斷來實(shí)現(xiàn)/路徑,直接在Express.get里面寫就行了,send內(nèi)容是中文時,也不用切換格式了,直接寫進(jìn)去就行。非常方便,404都不用寫。該應(yīng)用程序?qū)ο蟀ㄓ糜诼酚蒆TTP請求,配置中間件,呈現(xiàn)HTML視圖和注冊模板引擎的方法。監(jiān)聽函數(shù)在指定的主機(jī)和端口上創(chuàng)建b服務(wù)器。它與監(jiān)聽請求函數(shù)的方法相同。
4 第三方模塊
凡是第三方都需要npm加載,使用的時候require(‘包名)。我們在使用require()函數(shù)導(dǎo)入了Express.js模塊。Express模塊返回一個函數(shù)。此函數(shù)返回一個對象,該對象可用于配置Express應(yīng)用程序。該應(yīng)用程序?qū)ο蟀ㄓ糜诼酚蒆TTP請求,配置中間件,呈現(xiàn)HTML視圖和注冊模板引擎的方法。作為一個默認(rèn)備選,可以應(yīng)用作業(yè)隊列,作業(yè)隊列是為了解決一個特定的問題,通常要做的事情比單個Node.js流程可以立即處理的更多,因此,可以“排隊”處理要處理的事情,甚至可以將它們分配給其他流程來處理。
5 回調(diào)函數(shù)
引入npm包,初始化package.json。通過提示符進(jìn)入向?qū)?,其中最有用的信息是depenencies信息,來保存第三包信息,這就需要在安裝第三方包的時候都得加上save來保存依賴項(xiàng)信息。所以有了這個包,模塊丟失無妨,可以在package.json這個文件里找到depenencies的依賴項(xiàng)。異步函數(shù):代碼執(zhí)行過程中不會等待定時器,哪怕定時零秒,為單線程。當(dāng)執(zhí)行異步api時,不會等待。所以不能在函數(shù)內(nèi)部直接返回函數(shù)值,返回undefined。
對于日常使用,模塊使我們可以從較小的部分組成較大的程序。它們共同定義了模塊,成為了更大的軟件的基本構(gòu)建模塊。在幕后,模塊通過名為模塊的對象來跟蹤自身。因此,模塊是指代的對象。其中GruntJS包括用于各種任務(wù)的插件。例如,只要應(yīng)用程序中的任何Js文件發(fā)生更改,插件都會自動重新啟動節(jié)點(diǎn)服務(wù)器。因此,不必在每次修改Js時都手動停止并重新啟動節(jié)點(diǎn)服務(wù)器。該插件可用于壓縮CSS文件也可用于格式化,搜索或重寫應(yīng)用程序中的Js。Node.js中非?;镜臅挼纳矸蒡?yàn)證是驗(yàn)證用戶是否確實(shí)被聲明為誰的過程。 授權(quán)是確定用戶是否具有訪問他/她請求的資源的特權(quán)的過程。驗(yàn)證是服務(wù)器給的,所以這樣就很安全,不太容易偽造出來。這個時候我們就可以包一些敏感的數(shù)據(jù)保存到服務(wù)端??蛻舳酥恍枰弥@把鑰匙就可以了。對于Node中的非模塊成員使用Node打開時,在Node的目錄(執(zhí)行Node命令的路徑)下找這個文件,只需要把相對路徑替換為絕對路徑(動態(tài)獲取不受執(zhí)行Node命令所屬路徑影響,用Export引出對象,在a文件中用b的成員時,需要使用Exports將成員接出。默認(rèn)情況下,它包含在應(yīng)用程序的每個Js文件中。這樣的話我們就可以利用不同的請求方法讓一個請求路徑使用多次,注意req.query只能拿get函數(shù)請求的參數(shù)。
6 信息管理
引入路由,下面列出了在Node.js中實(shí)現(xiàn)路由的兩種方法。使用框架:Node具有許多框架來幫助啟動和運(yùn)行服務(wù)器。 Express框架具有一個與服務(wù)響應(yīng)對應(yīng)的對象,所以建議在次框架下應(yīng)用路由。當(dāng)處理添加頁面時,注意這里的重定向是在點(diǎn)擊提交之后直接回到初始并編寫保存數(shù)據(jù)的函數(shù)。獲取信息函數(shù)的參數(shù)一值永遠(yuǎn)為空,第二個值為拿到列表的數(shù)據(jù);根據(jù)id獲取信息對象(在這里可以定義findById一個參數(shù)是為了拿到ID)。注意函數(shù)的更新功能:使用時必須將id統(tǒng)一轉(zhuǎn)換為數(shù)字類型,要修改誰,就需要把誰找出來。當(dāng)某個遍歷項(xiàng)符合既定條件時,就將對象數(shù)據(jù)轉(zhuǎn)換為字符串。
以物流信息管理系統(tǒng)為例,如圖3所示。
7 結(jié)語
JavaScript基本上被用作Web前端開發(fā)工具,并被證明是構(gòu)建跨開發(fā)平臺的重要工具。而Node.js在Web開發(fā)的這一重大轉(zhuǎn)變中起了重要作用。它使開發(fā)人員可以用Js編寫服務(wù)器端應(yīng)用程序。人們可用Js編寫前端和后端Web應(yīng)用程序,而且不需要使用任何其他服務(wù)器端編程語言。這些優(yōu)勢使建立服務(wù)器變得比較容易。
【參考文獻(xiàn)】
【1】吳春玲,劉廣偉,程淑偉.基于Node.js的河道排污監(jiān)測管理平臺的設(shè)計與實(shí)現(xiàn)[J].工業(yè)控制計算機(jī),2018(10):121-122.
【2】朱曉陽,劉苑如,范仲言.基于Node.js的學(xué)習(xí)平臺后端系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].電腦知識與技術(shù),2019(13):116-118.
【3】王伶俐,張傳國.基于NodeJS+Express框架的輕應(yīng)用定制平臺的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)科學(xué),2017,44(S2):606-609.