node.js --- MVC

本文通过分析index.js、router.js和controller.js三个核心文件,展示了MVC模式在实际应用中的实现。MVC模式将数据模型(Model)、视图(View)和控制器(Controller)分离,提高系统的灵活性、扩展性和可维护性。在简易封装的MVC中,index.js作为服务器入口,加载router和controller;router.js负责处理静态资源和URL注册;controller.js则包含具体业务逻辑。通过这种方式,实现了请求处理和业务逻辑的解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVC即 model 、controller、view;

        M: Model      数据模型层
        V: View       视图层
        C: Controller 逻辑控制层

MVC模式将model、view、controller分离;
使用mvc分层是系统更加灵活,扩展性更强。让程序更加直观、复用性更强、可维护性更强。

model 负责数据访问;
controller 负责消息处理;
view 负责视图呈现;

简易封装一个MVC的方法:

        index.js文件:

var http=require("http")
var router =require("./router.js")
var controller =require("./controller.js")
var app=http.createServer(router)
//静态资源托管
router.static(__dirname+"/src")
//注册网址
router.get("/ajax1",controller.ajax1)
router.get("/ajax2",controller.ajax2)
router.get("/ajax3",controller.fn)

app.listen(8081)

        router.js文件:

var fs = require("fs")
var url = require("url")
var querysting = require("querystring")
var mime = require("mime")
let urls = {}
let router = function (req, res) {
    //这个函数每次用户访问时运行
    let pathname = url.parse(req.url).pathname
    fs.readFile(router.basepath + pathname, (err, data) => {
        if (!err) {
            res.setHeader("content-Type", mime.getType(pathname))
            res.end(data)
        } else {
            if (!urls[pathname]) {
                res.end("404 not found")
            } else {
                urls[pathname](req, res)
            }
        }
    })
}
router.static = function (path) {
    this.basepath = path
}
router.get = function (url, cb) {
    urls[url] = cb
}
router.basepath = __dirname + "/src"
module.exports = router;

        controller.js文件:

module.exports = {
    ajax1(req, res) {
        // 业务代码
    },
    ajax2() {
        // 业务代码
    },
    fn() {
        // 业务代码
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z_小张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值