node.js+mysql+html實現簡易數據庫管理系統


程序入口是app.js。通過signin.js與mysql數據庫取得連接。controller.js的作用是掃描controller目錄下的各個js文件,並將這些文件處理過的URL記錄到map里面,這個map是映射的意思,可以簡單理解為哈希表,瀏覽器在工作時遇到post或get請求可以迅速在這個映射表中找到相應文件的url並執行。在本proj中我們只要用到post和get兩種請求就可以(實際上還有put和delete兩種請求,只不過我們沒用到)。以上是程序的最外層。

controller目錄下的所有js模塊都是URL處理函數的集合。每個模塊處理相應的URL,生成對應的post和get請求,在module.export中暴露出來,以便addmapping處理。get請求是瀏覽器的主動獲取,當我們在瀏覽器上輸入get請求的url“代號”,瀏覽器會主動抓取這個代號所指向的url,獲取文件的所有內容。我們這次程序中,每個get請求的url代號都指向一個html文件,於是瀏覽器就執行html文件。唯一不同的就是image.js文件,這個文件是用來處理兩張背景圖的url,也是生成get請求。

views目錄下是html+css+js,主要用於頁面效果的展示。css文件就是樣式表,沒什么可講的。每個html文件中都包括一個處理該頁面數據的script腳本鏈接。我們這里用的是最流行也是最好用的jquery,於是要接入jquery的js模塊。同時,我們是通過views目錄下的各個與html同名的js文件來做中介處理前端和后台之間的聯系。於是html文件中還要加上這個js模塊的腳本鏈接。

還是在views目錄下。講完了html,我們來講講views目錄下的各個js模塊。這個js模塊是為了響應與它同名的html文件中的事件,處理html中用戶輸入的數據。模塊用到了.ajax方法。解釋一下ajax各個參數的意義。data是發送到服務器(不是瀏覽器)的數據。datatype是預期服務器會返回的數據類型,(不指定的話似乎好像也會自動判斷?)我們這里設置成json格式,因為這是輕量級數據交互格式,后面會講到。async參數是true或false,我們這里是同步請求,所以設置成false,這樣一來,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。success參數是請求成功后的回調函數,它的參數是由服務器根據datatype參數進行處理過並返回的數據。url參數是發送請求的地址。type參數是請求的方式。

接下來就是最重要的前端數據處理了。controller目錄下的各個js文件里除了生成get請求的url地址,還有一個重要的工作就是將各個處理數據的模塊各自生成post請求的url地址。通過views目錄下的js文件將前端數據調用post請求對應的url進行處理,處理的數據再發送到前端。交互過程主要是再上文所述的views目錄下的各個js文件,不再贅述。

整個程序實現的核心在於async函數。這個函數需要node.js 7.6及以上的版本才能支持(我目前用的是7.8)。這個函數專門用於處理異步請求,函數有兩個參數(ctx,next)。函數是以中間件的形式實現。(然而我還不是很理解這個概念orz)。ctx對象可以訪問前台的數據,通過ctx.request,也可以將處理完的數據返回到前台,通過ctx.response。尤其要注意的是async要配合await使用,一個async里面一定要出現await才能將這個函數加入到中間件里面,否則程序運行到這里后會中斷,無法再訪問后續的中間件成員。async函數其實是高度格式化的一個東西,使用時遵循這些格式,就不會發生奇怪的錯誤。

從三月下旬開始學習js和html,今天下午通過了春學期數據庫proj驗收,這次proj我受到了黃雨生大佬在git上的項目很大的啟發,前后台交互的一些東西是學習他的,后台的實現則是自己寫的,html和css是隊友們調的。這里一並感謝他們。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM