nodejs服务端MVC架构介绍

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.html
        res.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();
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值