nodejs服务端MVC架构介绍
MVC架构本质:确定每一个js文件的职责
以nodejs数据管理系统为例,本文章代码仅为服务端演示代码,单独复制粘贴可能无效果。因为MVC并不是一门技术,而是一种项目架构思想
index.js:负责接收请求router.js:负责将请求分发给C层controller.js:C层负责处理业务逻辑(V与M之间的沟通)views:V层:负责展示页面model: M层:负责处理数据(增删改查)
/* 路由模块:只负责分发网络请求给C层,不处理 *///导入C层const controller = require('./controller.js');//1.导入express模块const express = require('express');//2.创建路由var app = express();//路由分发//Express支持链式语法app.get('/',controller.showHeroList).get('/heroList',controller.getHeroList).post('/heroAdd',controller.doHeroAdd).get('/heroInfo',controller.getHeroInfo).get('/heroDelete',controller.doHeroDelete);//3.导出路由模块module.exports = app;
/* C层:负责业务逻辑处理:M与C层之间的沟通 *///M层:操作数据库增删改查const hero = require('./model/hero.js');module.exports = {showHeroList: (req, res) => {//服务端重定向到view/heroList.htmlres.writeHead(302, {'Location': 'views/heroList.html'});res.end();},getHeroList: (req, res) => {//1.展示首页列表数据hero.find((err, jsonData) => {console.log(jsonData);if (err) {throw err;} else {res.end(jsonData);};});},doHeroAdd: (req, res) => {//完成解析之后,将得到的数据存入json文件hero.add(req.body, (err) => {if (err) {//服务端不能直接返回js对象,因为服务器是给所有客户端使用,需要返回json对象res.end(JSON.stringify({err_code: 100,err_msg: err.err_msg}));} else {res.end(JSON.stringify({err_code: 0,err_msg: 'success'}));}});},getHeroInfo: (req, res) => {var heroID = req.query.id;//处理hero.find(heroID, (err, data) => {if (err) {throw err;} else {res.end(data);};});},doHeroDelete: (req, res) => {//(1)获取请求参数let heroID = req.query.id;//(2)处理请求hero.delete(heroID, (err) => {if (err) {throw (err);} else {//服务端重定向刷新首页res.writeHead(302, {'Location': 'views/heroList.html'});res.end();}});}}