MVC是什么妇多?
1.model負(fù)責(zé)跟數(shù)據(jù)庫(kù)建立映射關(guān)系和操作數(shù)據(jù)庫(kù)
由于model有兩個(gè)功能氯哮,所以將其劃分為model 和 server兩個(gè)文件夾
- modle文件夾負(fù)責(zé)與數(shù)據(jù)庫(kù)建立映射關(guān)系
- server文件夾負(fù)責(zé)操作數(shù)據(jù)庫(kù)
2.view前端頁(yè)面的渲染(也叫視圖層)
3.controller 控制層脂凶,負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行處理
??前端發(fā)送的請(qǐng)求(req)和后端發(fā)送的響應(yīng)(res)都要在controller層進(jìn)行數(shù)據(jù)處理敲街,最終由API創(chuàng)建虛擬路徑的同時(shí)鼻百,調(diào)用controller層的方法完成整個(gè)接口開發(fā)
MVC中文件關(guān)系
1.一個(gè)model文件對(duì)應(yīng)一個(gè)server文件
2.一個(gè)server文件對(duì)應(yīng)一個(gè)controller文件
3.一個(gè)controller文件對(duì)應(yīng)一個(gè)API文件
這些文件名保持一致
創(chuàng)建流程
創(chuàng)建一個(gè)config 文件夾
??在文件夾下創(chuàng)建一個(gè)database.js文件(database.js文件導(dǎo)出的是一個(gè)對(duì)象绞旅,對(duì)象中包含著所有與數(shù)據(jù)庫(kù)有關(guān)的參數(shù))
創(chuàng)建model文件夾
??2.1建立index.js文件,導(dǎo)入sequelize模塊并解析出Sequelize和DataTypes温艇,導(dǎo)入數(shù)據(jù)庫(kù)設(shè)置模塊(config/database),然后實(shí)例化Sequelize類因悲,創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象(在此處導(dǎo)入各個(gè)數(shù)據(jù)表),接著更新數(shù)據(jù)庫(kù)勺爱,將所有導(dǎo)入的數(shù)據(jù)表導(dǎo)出(只有index.js能導(dǎo)出所有數(shù)據(jù)表)
??2.2建立數(shù)據(jù)表.js文件晃琳,文件名跟數(shù)據(jù)名保持一致,此文件導(dǎo)出的是一個(gè)方法琐鲁,這個(gè)方法需要在index.js文件中調(diào)用創(chuàng)建的數(shù)據(jù)表卫旱,并且在這個(gè)文件中,以對(duì)象的形式設(shè)置數(shù)據(jù)表
創(chuàng)建server文件夾
??3.1server文件夾是對(duì)表進(jìn)行操作围段,所以一張表對(duì)應(yīng)一個(gè)server文件顾翼,文件名與表名保持一致
??3.2在文件內(nèi)引入數(shù)據(jù)表(model中的index.js文件),由于model中index.js是將所有表以對(duì)象的形式一起導(dǎo)出奈泪,所以我們需要聲明變量將所需要的操作的表單獨(dú)接一下
??3.3定義數(shù)據(jù)表的增刪改查的方法
??3.4方法中會(huì)將前端發(fā)送過(guò)來(lái)的數(shù)據(jù)(req.body(post)/req.query(get))發(fā)給數(shù)據(jù)庫(kù)适贸,并將數(shù)據(jù)庫(kù)返回的信息發(fā)送給前端(controller)(以回調(diào)函數(shù)的形式),所以每個(gè)方法都有兩個(gè)參數(shù)灸芳,第一個(gè)參數(shù)是前端發(fā)送過(guò)來(lái)的數(shù)據(jù)(req),第二個(gè)參數(shù)是回調(diào)函數(shù)
??3.5把所有數(shù)據(jù)操作的方法以對(duì)象的形式導(dǎo)出
創(chuàng)建controller文件夾
??4.1controller是對(duì)數(shù)據(jù)進(jìn)行處理,所以跟server里的文件成對(duì)應(yīng)關(guān)系取逾,一個(gè)server文件對(duì)應(yīng)controller文件耗绿,且名字保持一致
??4.2controller中的方法有req和res兩個(gè)參數(shù)
??4.3先引入對(duì)應(yīng)的server文件苹支,再定義數(shù)據(jù)處理方法砾隅,另外server文件中導(dǎo)出的方法。每一個(gè)方法都有數(shù)據(jù)處理方法
??4.4在定義的數(shù)據(jù)處理的方法中债蜜,調(diào)用server晴埂,server中第一個(gè)參數(shù)是req.body/req.query,第二個(gè)參數(shù)是回調(diào)函數(shù),在回調(diào)函數(shù)中以res.send()向前端返回?cái)?shù)據(jù)
??4.5將所有的數(shù)據(jù)處理方法以對(duì)象的形式導(dǎo)出
API
??5.1使用express中的路由模塊來(lái)設(shè)置API路徑寻定,先導(dǎo)入express模塊儒洛,再用變量接一下路由模塊
??5.2引入controller控制器
??5.3使用router中的get和post方法定義API路徑和請(qǐng)求方式,post加載較慢狼速,get會(huì)暴露用戶信息琅锻,很不
??5.4導(dǎo)出路由模塊router
將每一個(gè)API文件在app.js文件中引入并掛載