-
MVC 是什么?
MVC構成:
model
負責跟數(shù)據(jù)庫建立映射關系和操作數(shù)據(jù)庫
由于model層有兩個功能 所以將其分為 model 和 server兩個文件夾
model文件夾負責與數(shù)據(jù)庫建立映射關系
model中 index.js 負責設置和創(chuàng)建數(shù)據(jù)庫對象 以及向數(shù)據(jù)庫中導入所有的表
其他.js文件 負責設置數(shù)據(jù)表
通常一張數(shù)據(jù)表對應一個 .js 文件
我們將表創(chuàng)建好之后 會將其中導出一個方法 然后將這個方法在index.js中調(diào)用就可以創(chuàng)建一張數(shù)據(jù)表
這個方法調(diào)用在實例化數(shù)據(jù)庫之后 更新數(shù)據(jù)庫之前
server文件夾負責操作數(shù)據(jù)庫
server需要通過操作model中建立的數(shù)據(jù)表之間映射關系 來對表進行增刪改查
一張數(shù)據(jù)表 對應一個server文件
也就是說 model文件中除了 index.js 其他js文件對應一個server中js文件
所有情況下 文件名相同
view
前端頁面的渲染(也叫視圖層)
controller
負責對數(shù)據(jù)進行處理(也叫控制層)
前端給后端發(fā)送的請求(req)和后端給前端發(fā)送的響應(res)都要在 controller層處理最終由API創(chuàng)建路徑 創(chuàng)建路徑的同時 調(diào)用controller層的方法 完成整個接口開發(fā)(API不屬于MVC流程)
-
MVC中 文件的關系
一個model文件 對應 一個server文件
一個server文件 對應 一個controller文件
一個controller文件 對應 一個API文件
這些文件的文件名保持一致通常我們在開發(fā)的時候
- 先創(chuàng)建一個config文件夾 在文件夾下創(chuàng)建一個database.js文件
database.js文件 導出的是一個對象 對象中包含著所有與數(shù)據(jù)庫有關的參數(shù) - 創(chuàng)建model文件夾
2.1 創(chuàng)建 index.js 文件
導入sequelize模塊 并解析出 Sequelize 和 DataTypes
導入數(shù)據(jù)庫設置模塊(config/database)
實例化 Sequlize 類 創(chuàng)建數(shù)據(jù)庫對象
(在此處導入各個數(shù)據(jù)表)
更新數(shù)據(jù)庫
將所有導入的數(shù)據(jù)表導出(只有 index.js 才能導出數(shù)據(jù)表)
2.2 建立 數(shù)據(jù)表.js 文件
文件名和數(shù)據(jù)表名保持一致(此文件導出的是一個方法)
這個方法 需要在 index.js 中調(diào)用 來創(chuàng)建數(shù)據(jù)表
我們只在這個文件中 以對象的形式來設置數(shù)據(jù)表 - 創(chuàng)建 server 文件夾
3.1 server文件夾 是對數(shù)據(jù)表進行操作 所以一張數(shù)據(jù)表對應一個server文件
文件名和表名保持一致
3.2 在文件內(nèi) 先引入數(shù)據(jù)表(model中的index.js)
由于 model 中 index.js 是將所有數(shù)據(jù)包以對象的形式一起導出
所以我們需要用變量 將所需要操作的那個表單獨接出來
3.3 定義數(shù)據(jù)表的增刪改查方法
3.4 方法中 會將1前端發(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ù)庫的操作方法 以對象的形式導出 - 創(chuàng)建 controller 文件夾
4.1 controller 是對數(shù)據(jù)進行處理 所以跟server中的文件成對應關系
一個server文件 對應 一個controller文件 名字保持一致
4.2 controller中的方法 有req和res兩個參數(shù)
req代表請求
post請求 使用 req.body 來接收
get請求 使用 req.query 來接收
res代表響應
4.3 先引入對應的 server 文件 再定義數(shù)據(jù)處理方法
server文件中 導出的方法 都有一個數(shù)據(jù)處理方法
4.4 在定義的數(shù)據(jù)處理方法中 調(diào)用 server 方法
server方法中 第一個參數(shù) req.body/req.query
第二個參數(shù) 回調(diào)函數(shù) 在回調(diào)函數(shù)中 以 res.send()方法向前端返回數(shù)據(jù)
4.5 將所有的數(shù)據(jù)處理方法 以對象的形式導出 - 創(chuàng)建api文件夾
5.1 使用 express 中的路由模塊 來設置api路徑
先導入 express 模塊
再用變量接一下路由模塊
5.2 引入 controller 控制器
一個controller文件 對應 一個api文件 文件名保持一致
5.3 使用router中的get或post方法 定義api的路徑和請求方式
如果用get()方法定義 那么就是get的請求方式
如果用post()方法定義 那么就是post的請求方式
不管用什么方法定義 他都有兩個參數(shù)
第一個參數(shù) 自定義的api路徑
第二個參數(shù) 對應的 controller 數(shù)據(jù)處理方法
5.4 導出路由模塊 router - 將每一個api文件 在app.js中引入并掛載
- 先創(chuàng)建一個config文件夾 在文件夾下創(chuàng)建一個database.js文件
MVC
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門型凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘱函,你說我怎么就攤上這事甘畅。” “怎么了往弓?”我有些...
- 文/不壞的土叔 我叫張陵疏唾,是天一觀的道長。 經(jīng)常有香客問我函似,道長荸实,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任缴淋,我火速辦了婚禮准给,結果婚禮上,老公的妹妹穿的比我還像新娘重抖。我一直安慰自己露氮,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布钟沛。 她就那樣靜靜地躺著畔规,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恨统。 梳的紋絲不亂的頭發(fā)上叁扫,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掩宜!你這毒婦竟也來了蔫骂?” 一聲冷哼從身側響起,我...
- 正文 年R本政府宣布,位于F島的核電站贷掖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏苹威。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一牙甫、第九天 我趴在偏房一處隱蔽的房頂上張望调违。 院中可真熱鬧,春花似錦技肩、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至羡洁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筑煮,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架贿条,建立于...
- 本文首先描述 MVC 模式是什么增热,然后針對 MVC 的不足發(fā)表了作者的個人觀點,隨后引出了基于 REST 架構實現(xiàn)...
- ASP.NET是使用HTML悄蕾、CSS、JS和服務端腳本創(chuàng)建Web頁面和網(wǎng)站的開發(fā)框架帆调。 ASP.NET支持三種開發(fā)...