張釗源 劉曉瑜 鞠玉霞



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