版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目10
綜合項(xiàng)目——學(xué)生成績(jī)查詢(xún)期末考試結(jié)束后,李老師著手開(kāi)發(fā)學(xué)院的學(xué)生成績(jī)管理系統(tǒng),并邀請(qǐng)張華加入項(xiàng)目團(tuán)隊(duì)。其中,一個(gè)關(guān)鍵模塊要求前端能以表格的形式展現(xiàn)后端服務(wù)器提供的數(shù)據(jù)。在李老師的指導(dǎo)下,張華決定采用
Node.js+Ajax+MySQL技術(shù)棧開(kāi)發(fā),實(shí)現(xiàn)便捷的學(xué)生成績(jī)查詢(xún)功能。該功能的核心需求是,用戶(hù)在前端頁(yè)面單擊“點(diǎn)我獲取成績(jī)表”按鈕后,頁(yè)面無(wú)須刷新即可觸發(fā)后端查詢(xún)MySQL數(shù)據(jù)庫(kù)操作,并將查詢(xún)結(jié)果以表格的形式直觀地展示在前端頁(yè)面上。情境導(dǎo)入1.常見(jiàn)的數(shù)據(jù)庫(kù)現(xiàn)在市面上流行的數(shù)據(jù)庫(kù)有多種,常見(jiàn)的數(shù)據(jù)庫(kù)有MySQL、Oracle、SQLServer、MongoDB
等,其中,MySQL、Oracle、SQLServer
等數(shù)據(jù)庫(kù)為關(guān)系數(shù)據(jù)庫(kù),屬于傳統(tǒng)數(shù)據(jù)庫(kù),MongoDB為NoSQL數(shù)據(jù)庫(kù),也稱(chēng)非關(guān)系數(shù)據(jù)庫(kù),屬于新型數(shù)據(jù)庫(kù)。本項(xiàng)目使用MySQL數(shù)據(jù)庫(kù)進(jìn)行講解。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)2.創(chuàng)建數(shù)據(jù)庫(kù)連接(1)新建數(shù)據(jù)庫(kù)和表打開(kāi)
MySQL
數(shù)據(jù)庫(kù)客戶(hù)端,創(chuàng)建名為
mydb的數(shù)據(jù)庫(kù),創(chuàng)建表stuscore,并插入幾條測(cè)試數(shù)據(jù)。(2)安裝與連接數(shù)據(jù)庫(kù)①
使用Node.js連接MySQL數(shù)據(jù)庫(kù)時(shí),需要先安裝MySQL第三方模塊,可以通過(guò)如下命令下載。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)npminstallmysql@2.18.1②
連接數(shù)據(jù)庫(kù)。新建test.js文件,代碼如下。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)constmysql=require('mysql'); //導(dǎo)入MySQL模塊constdb=mysql.createPool({ //創(chuàng)建連接host:'127.0.0.1',user:'root',password:'admin123',database:'mydb'});//測(cè)試是否連接成功db.query('select1',(err,results)=>{if(err)returnconsole.log(err.message);console.log(results);});③
執(zhí)行上述連接文件,如果出現(xiàn)如下結(jié)果,則說(shuō)明連接成功。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)[RowDataPacket{'1':1}]3.操作數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)連接成功后,可以對(duì)數(shù)據(jù)表進(jìn)行增、刪、改、查等操作。(1)查詢(xún)數(shù)據(jù)表查詢(xún)users表中的所有數(shù)據(jù),使用MySQL模塊提供的query()方法進(jìn)行查詢(xún)操作。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//執(zhí)行SQL語(yǔ)句constsqlStr='select*fromusers';db.query(sqlStr,(err,results)=>{if(err)returnconsole.log(err.message);console.log(results);})(2)插入操作在users表中插入一條記錄,代碼如下。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//準(zhǔn)備要插入的數(shù)據(jù)constuser={username:'張華',password:'123456'};constsqlStr='insertintousers(username,password)values(?,?)';db.query(sqlStr,[user.username,user.password],(err,results)=>{if(err)returnconsole.log(err.message);//成功if(results.affectedRows===1){console.log('插入數(shù)據(jù)成功');}})插入操作還可以使用較為簡(jiǎn)便的方法實(shí)現(xiàn),代碼如下。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//準(zhǔn)備要插入的數(shù)據(jù)constuser={username:'zhangsan',password:'123456'};constsqlStr='insertintousersset?';db.query(sqlStr,user,(err,results)=>{if(err)returnconsole.log(err.message);//成功if(results.affectedRows===1){console.log('插入數(shù)據(jù)成功');}})(3)更新數(shù)據(jù)根據(jù)條件更新users表中的記錄,代碼如下。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//準(zhǔn)備更新語(yǔ)句constuser={id:4,username:'lisi',password:'654321'};constsqlStr='updateuserssetusername=?,password=?whereid=?';db.query(sqlStr,[user.username,user.password,user.id],(err,results)=>{if(err)returnconsole.log(err.message);//成功if(results.affectedRows===1){console.log('更新數(shù)據(jù)成功');}})更新操作還可以使用較為便捷的方法實(shí)現(xiàn),代碼如下。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//準(zhǔn)備要插入的數(shù)據(jù)constuser={id:5,username:'lisi',password:'654321'};constsqlStr='updateusersset?whereid=?';db.query(sqlStr,[user,user.id],(err,results)=>{if(err)returnconsole.log(err.message);//成功if(results.affectedRows===1){console.log('更新數(shù)據(jù)成功');}})(4)刪除數(shù)據(jù)若要?jiǎng)h除指定的記錄,則首先需要編寫(xiě)SQL語(yǔ)句,使用MySQL模塊提供的query()方法進(jìn)行刪除操作。任務(wù)使用Node.js操作數(shù)據(jù)庫(kù)//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//進(jìn)行刪除操作constsqlStr='deletefromuserswhereid=?';db.query(sqlStr,5,(err,results)=>{if(err)returnconsole.log(err.message);//成功if(results.affectedRows===1){console.log('刪除數(shù)據(jù)成功');}})本項(xiàng)目主要分為前端和后端兩部分交互操作。前端主要通過(guò)Ajax技術(shù)在不刷新頁(yè)面的情況下,將后端數(shù)據(jù)以表格的形式動(dòng)態(tài)顯示在前端頁(yè)面上。按照上面的項(xiàng)目分析,項(xiàng)目實(shí)現(xiàn)時(shí)需要如下技術(shù)支撐。(1)Node.js環(huán)境。(2)express等第三方模塊。(3)MySQL8.0數(shù)據(jù)庫(kù)。(4)JavaScript+Ajax+VSCode等技術(shù)和工具。(5)解析JSON格式數(shù)據(jù)的工具。項(xiàng)目分析1.搭建項(xiàng)目環(huán)境(1)創(chuàng)建stuscore目錄,并將其作為項(xiàng)目目錄。(2)項(xiàng)目初始化設(shè)置。切換到stuscore目錄,執(zhí)行如下命令,完成項(xiàng)目初始化并安裝所需模塊。項(xiàng)目實(shí)施npminit-ynpminstallexpress@4.19.2 //穩(wěn)定版,適配項(xiàng)目需求npminstallmysql@2.18.1 //兼容MySQL8.0+,避免連接兼容問(wèn)題2.創(chuàng)建MySQL連接模塊在項(xiàng)目stuscore根目錄下新建schema目錄,在該目錄下新建conn.js文件,并將其作為MySQL連接模塊。項(xiàng)目實(shí)施//省略導(dǎo)入MySQL模塊及創(chuàng)建連接的代碼//導(dǎo)出獲得連接的對(duì)象module.exports=db3.創(chuàng)建MySQL查詢(xún)路由模塊在項(xiàng)目stuscore根目錄下新建router目錄,然后在router目錄下創(chuàng)建mysqlModule.js文件,作為路由模塊文件。項(xiàng)目實(shí)施4.創(chuàng)建Web服務(wù)器(1)打開(kāi)項(xiàng)目stuscore根目錄,安裝cors模塊。(2)在項(xiàng)目stuscore根目錄下新建app.js文件,并將其作為項(xiàng)目入口服務(wù)器文件。項(xiàng)目實(shí)施npmicors@2.8.55.搭建前端數(shù)據(jù)顯示頁(yè)面在項(xiàng)目
stuscore
根目錄下新建
scoreinfo.html
文件,使用
Ajax
通過(guò)服務(wù)器接口獲取JSON格式的成績(jī)數(shù)據(jù),解析該數(shù)據(jù)并以表格形式提交到前端頁(yè)面。項(xiàng)目實(shí)施5.搭建前端數(shù)據(jù)顯示頁(yè)面在項(xiàng)目
stuscore
根目錄下新建
scoreinfo.html
文件,使用
Ajax
通過(guò)服務(wù)器接口獲取JSON格式的成績(jī)數(shù)據(jù),解析該數(shù)據(jù)并以表格形式提交到前端頁(yè)面。項(xiàng)目實(shí)施6.添加CSS樣式代碼,美化頁(yè)面效果7.查看頁(yè)面效果啟動(dòng)MySQL服務(wù)(可通過(guò)phpstudy、MySQL自帶客戶(hù)端等工具啟動(dòng))。然后切換到stuscore目錄,執(zhí)行如下命令。nodeapp.js打開(kāi)瀏覽器,直接雙擊scoreinfo.html文件(或通過(guò)VSCode的GoLive插件打開(kāi)),單擊“點(diǎn)我獲取成績(jī)表”按鈕。項(xiàng)目實(shí)施本項(xiàng)目是前端與后端數(shù)據(jù)交互的一個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師作業(yè)布置題庫(kù)及答案
- 傳染學(xué)考試試題及答案
- IBM(中國(guó))招聘面試題及答案
- 大學(xué)課程改革考試題及答案
- 中電科金倉(cāng)(北京)科技股份有限公司2026應(yīng)屆畢業(yè)生招聘考試備考題庫(kù)必考題
- 興國(guó)縣2025年公開(kāi)選調(diào)食品安全監(jiān)管人員的參考題庫(kù)附答案
- 北京市海淀區(qū)衛(wèi)生健康委員會(huì)所屬事業(yè)單位面向社會(huì)招聘14人備考題庫(kù)附答案
- 南充市自然資源和規(guī)劃局2025年公開(kāi)遴選公務(wù)員(2人)參考題庫(kù)必考題
- 四川省衛(wèi)健委所屬事業(yè)單位西南醫(yī)科大學(xué)附屬口腔醫(yī)院2025年12月公開(kāi)考核招聘工作人員的備考題庫(kù)附答案
- 廣安區(qū)2025年社會(huì)化選聘新興領(lǐng)域黨建工作專(zhuān)員的參考題庫(kù)附答案
- 2026年度新疆兵團(tuán)草湖項(xiàng)目區(qū)公安局招聘警務(wù)輔助人員工作(100人)考試參考題庫(kù)及答案解析
- 北京市豐臺(tái)二中2026屆數(shù)學(xué)高一上期末考試試題含解析
- LNG氣化站安裝工程施工設(shè)計(jì)方案
- 核酸口鼻采樣培訓(xùn)
- 企業(yè)安全隱患排查課件
- 2025版《煤礦安全規(guī)程》宣貫解讀課件(電氣、監(jiān)控與通信)
- (新教材)2026年部編人教版一年級(jí)下冊(cè)語(yǔ)文 語(yǔ)文園地一 課件
- DB43-T 2066-2021 河湖管理范圍劃定技術(shù)規(guī)程
- 2025核電行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與商業(yè)化前景分析報(bào)告
- 急驚風(fēng)中醫(yī)護(hù)理查房
- 營(yíng)地合作分成協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論