Nodejs 关于node MVC

Nodejs 关于node MVC

之前有接触过java的SSH框架,项目高度可配置,后期维护与拓展都很方便。配置信息基本都写在xml文件里面。 nodeJS 有类似于这样的框架吗? 1.可以通过一个 文件,进行系统的配置 2.action 与 数据操作 分离

6 回复

当然可以!在Node.js中,确实存在一些类似于Java的SSH框架(如Spring MVC)的MVC框架,这些框架可以帮助你构建模块化、易于维护和扩展的应用程序。以下是一些流行的Node.js MVC框架:

Express.js + Mongoose

Express.js 是一个轻量级的Web应用框架,而Mongoose是一个用于MongoDB的对象数据建模库。这两个库结合使用可以实现类似Java SSH框架的功能。

示例代码

  1. 安装依赖
npm install express mongoose body-parser
  1. 创建项目结构

假设你的项目结构如下:

myapp/
├── config/
│   └── db.js
├── controllers/
│   └── userController.js
├── models/
│   └── user.js
├── routes/
│   └── userRoutes.js
└── app.js
  1. 数据库配置 (config/db.js)
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/mydatabase', {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});

module.exports = mongoose;
  1. 模型定义 (models/user.js)
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema({
    name: { type: String, required: true },
    email: { type: String, required: true },
});

module.exports = mongoose.model('User', UserSchema);
  1. 控制器 (controllers/userController.js)
const User = require('../models/user');

exports.createUser = async (req, res) => {
    try {
        const newUser = new User(req.body);
        await newUser.save();
        res.status(201).send(newUser);
    } catch (err) {
        res.status(500).send(err);
    }
};

exports.getUsers = async (req, res) => {
    try {
        const users = await User.find();
        res.status(200).send(users);
    } catch (err) {
        res.status(500).send(err);
    }
};
  1. 路由定义 (routes/userRoutes.js)
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');

router.post('/users', userController.createUser);
router.get('/users', userController.getUsers);

module.exports = router;
  1. 主应用文件 (app.js)
const express = require('express');
const mongoose = require('./config/db');
const userRoutes = require('./routes/userRoutes');

const app = express();

app.use(express.json());
app.use('/api', userRoutes);

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

总结

通过上述代码,你可以看到Node.js中的Express.js和Mongoose如何协同工作,实现了类似于Java SSH框架的功能。每个组件(如数据库配置、模型、控制器和路由)都是分离的,这使得项目更加模块化和易于维护。此外,配置信息也可以集中管理,例如将数据库连接字符串放在单独的配置文件中,便于后续修改和维护。


正式因为SSH的这种,我抛弃了它!

觉得ssh太庞大了和node不搭啊

首选sails,亲试过线上项目

bearcat
支持 $ 自动注入哦,不需要繁杂的进行配置
weibo

Node.js 确实有一些类似的 MVC 框架,可以实现高可配置性和易于维护的特点。其中比较流行的包括 Express 和 Koa,它们通常配合一些中间件来实现 MVC 结构。下面是一个简单的例子,展示如何使用 Express 来构建一个基于 MVC 的应用。

示例代码

首先,确保你已经安装了 Node.js 和 npm(Node 包管理器)。

npm init -y
npm install express ejs

创建以下目录结构:

myapp/
├── app.js
├── config/
│   └── config.js
├── controllers/
│   └── homeController.js
├── models/
│   └── user.js
├── views/
│   └── index.ejs
└── routes/
    └── index.js

1. 配置文件 (config/config.js)

module.exports = {
  port: process.env.PORT || 3000,
  db: 'mongodb://localhost/mydatabase'
};

2. 控制器 (controllers/homeController.js)

exports.index = (req, res) => {
  res.render('index', { title: 'Home Page' });
};

3. 模型 (models/user.js)

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  email: String
});

module.exports = mongoose.model('User', userSchema);

4. 路由 (routes/index.js)

const express = require('express');
const router = express.Router();
const homeController = require('../controllers/homeController');

router.get('/', homeController.index);

module.exports = router;

5. 应用主文件 (app.js)

const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
const config = require('./config/config');

mongoose.connect(config.db, { useNewUrlParser: true, useUnifiedTopology: true });

const app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

const indexRouter = require('./routes/index');

app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);

app.listen(config.port, () => {
  console.log(`Server is running on port ${config.port}`);
});

解释

  • 配置文件:集中管理配置信息。
  • 控制器:处理请求并调用模型进行数据操作。
  • 模型:定义数据库操作。
  • 路由:将 URL 映射到控制器方法。
  • 视图:渲染 HTML 页面。

这种方式使得代码更加模块化,便于维护和扩展。

回到顶部