mvc是什么时呀?
是一種使用“模型-視圖-控制器”設(shè)計創(chuàng)建Web應(yīng)用程序的模式
model:
負(fù)責(zé)跟數(shù)據(jù)庫之間建立映射關(guān)系和操作數(shù)據(jù)庫
由于model有兩個功能张漂,所以將其劃分為model和server兩個文件夾
model文件夾,負(fù)責(zé)與數(shù)據(jù)庫建立映射關(guān)系
model中index.js負(fù)責(zé)設(shè)置和創(chuàng)建數(shù)據(jù)庫對象以及向數(shù)據(jù)中導(dǎo)入所有的表
其他js文件谨娜,負(fù)責(zé)設(shè)置數(shù)據(jù)表
通常情況下航攒,一張數(shù)據(jù)表就對應(yīng)一個.js文件
我們將表創(chuàng)建好之后會在其中導(dǎo)出一個方法,然后將這個方法在index.js中調(diào)用趴梢,就可以創(chuàng)建一張數(shù)據(jù)表
這個方法調(diào)用在實例化數(shù)據(jù)庫對象之后漠畜,更新數(shù)據(jù)庫之前
server文件夾負(fù)責(zé)操作數(shù)據(jù)庫
server需要用過操作model中建立的表間映射關(guān)系,來對表進(jìn)行增刪改查
一張數(shù)據(jù)表對應(yīng)一個server文件
也就是說坞靶,model中除了index.js憔狞,其他一個js對應(yīng)server中的js文件
所有條件下,文件名都相同
view
前端頁面的渲染(視圖層)
controller
控制層彰阴,負(fù)責(zé)對數(shù)據(jù)進(jìn)行處理
前端給后端發(fā)送請求(req)和后端給前端發(fā)送的響應(yīng)(res)都要在controller層處理
最終由API創(chuàng)建路徑的同時瘾敢,調(diào)用controller層的方法完成整個接口開發(fā)
mvc中文件關(guān)系
一個model文件對應(yīng)一個server文件
一個server文件對應(yīng)一個controller文件
一個controller文件對應(yīng)一個api文件
這些文件名保持一致
通常我們在開發(fā)的時候
1.創(chuàng)建一個config文佳佳,在文件創(chuàng)建一個database.js文件
database.js文件導(dǎo)出的是一個對象,對象中包含著所有與數(shù)據(jù)庫有關(guān)的參數(shù)
2.創(chuàng)建model文件夾
2.1建立index.js文件
導(dǎo)入sequelize模塊簇抵,并解析出Sequelize和DataTypes
導(dǎo)入數(shù)據(jù)庫設(shè)置模塊(config/database)
然后實例化Sequelize類庆杜,創(chuàng)建數(shù)據(jù)庫對象
(在此處導(dǎo)入各個數(shù)據(jù)表)
更新數(shù)據(jù)庫
將所有導(dǎo)入的數(shù)據(jù)白哦導(dǎo)出(只有index.js可以到處所有的數(shù)據(jù)表)
2.2建立數(shù)據(jù)表.js文件
文件名跟數(shù)據(jù)表名保持一致,此文件導(dǎo)出的是一個方法
這個方法需要在index.js中調(diào)用正压,來創(chuàng)建數(shù)據(jù)表
我們只在這個文件中以對象的形式來設(shè)置數(shù)據(jù)表
3.創(chuàng)建server文件夾
3.1server文件夾是對表進(jìn)行操作欣福,所以一張表對應(yīng)一個server文件,文件名與表名保持一致
3.2在文件內(nèi)先引入數(shù)據(jù)表(model中的index.js)
由于model中index.js焦履,是將所有表以對象的形式一起導(dǎo)出
所以我們需要用變量將所需要操作的表單獨接出來
3.3定義數(shù)據(jù)表的增刪改查方法
3.4方法中會將前端發(fā)送過來的數(shù)據(jù)(req.body / req.query)發(fā)給數(shù)據(jù)庫
并將數(shù)據(jù)庫返回的信息發(fā)送給前端(以回調(diào)函數(shù)的形式)
所以每個方法都由兩個參數(shù)
第一個參數(shù):前端發(fā)送過來的數(shù)據(jù)
第二個參數(shù):回調(diào)函數(shù)
3.5把所有數(shù)據(jù)庫的操作方法以對象的形式導(dǎo)出
4.創(chuàng)建controller文件
4.1controller是對數(shù)據(jù)進(jìn)行處理拓劝,所以跟server里的文件成樹立關(guān)系
一個server文件對應(yīng)一個controller文件,名字保持一致
4.2controller中的方法有req和res兩個參數(shù)
req:代表請求
post的請求嘉裤,使用req.body來接收
get的求情郑临,使用req.query來接收
ers:代表相應(yīng)
4.3先引入對應(yīng)的server文件,在定義數(shù)據(jù)的處理方法
server中導(dǎo)出的方法屑宠,每一個方法都要有數(shù)據(jù)的處理方法
4.4在定義的數(shù)據(jù)處理方法中調(diào)用server方法
server方法中的第一個參數(shù):erq.body / erq.query
server方法中的第二個參數(shù):回調(diào)函數(shù)厢洞,在回調(diào)函數(shù)中以res.send()向前端返回數(shù)據(jù)
4.5將所有的數(shù)據(jù)處理方法以對象的形式導(dǎo)出
5.API
5.1使用express中的路由模塊來設(shè)置API路徑
先導(dǎo)入express模塊
再用變量接一下路由模塊
5.2引入controller控制器
一個controller文件對應(yīng)一個API方法,文件名保持一致
5.3使用router中的get或者post方法定義API路徑和請求方式
如果用get方法定義典奉,那么就是get請求方式
如果是post方法定義躺翻,那么就是post請求方式
不管用什么方法定義,他都有兩個參數(shù)
第一個參數(shù):自定義的API路徑
第二個參數(shù):對應(yīng)的controller數(shù)據(jù)處理方法
5.4導(dǎo)出路由模塊router