Nodejs:接触一周了,这几天花时间写了个简单的MVC开发框架

Nodejs:接触一周了,这几天花时间写了个简单的MVC开发框架

名字想好了,就叫

YSYS云上元素Node.js开发框架(MVC)

等我把代码整理到git上,希望大家多多吐槽…

19 回复

当然可以。以下是一个简化的 Node.js MVC 开发框架的实现示例。这个框架包括基本的路由、控制器和视图处理功能。

项目结构

ysys-framework/
├── app.js
├── controllers/
│   └── homeController.js
├── views/
│   └── home/
│       └── index.ejs
├── routes/
│   └── index.js
└── package.json

安装依赖

首先,确保你已经安装了 Node.js 和 npm。然后,在项目根目录下创建 package.json 文件,并安装必要的依赖:

npm init -y
npm install express ejs

app.js

这是应用的入口文件,负责配置 Express 应用并加载路由。

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');

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

// 使用中间件
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// 加载路由
const routes = require('./routes/index');
app.use('/', routes);

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

controllers/homeController.js

定义一个简单的控制器来处理请求。

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

routes/index.js

定义路由并将其映射到控制器。

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

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

module.exports = router;

views/home/index.ejs

这是一个简单的 EJS 模板文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><%= title %></title>
</head>
<body>
    <h1>Welcome to the Home Page!</h1>
</body>
</html>

总结

以上就是一个简单的 Node.js MVC 开发框架的基本实现。通过这个框架,你可以更方便地组织和管理你的应用程序逻辑。希望这个示例对你有帮助!如果你有任何问题或建议,请随时告诉我。


我喜欢煎蛋粗暴

目录结构

  • 目录/文件 说明

  • index.js 框架入口文件(可重命名)
  • ├── Action 控制器文件目录
  • ├── Conf 框架配置文件目录
  • ├── Lib 框架核心基类库目录
  •    └─┌── index.js  框架HTTP服务
    
  •      ├── router.js 框架路由
    
  •      └── common.js 公用方法模型
    
  • ├── Tpl 模板目录
  • └── node_modules 框架扩展目录(可自行添加新的模块)

一周就开始写框架了,膜拜啊

没有真相?

node.js能写后台管理系统吗

好有php的味道…我怕jser不喜欢

有眼光,哈哈我就是仿Thinkphp的框架写的…

用了一些同步的方法,一个请求会阻塞整个进程,确实如楼上所说,可能不合jser的口味

楼主效率很高哇,phper会很熟悉!

嗯,就是针对PHPer的,上手快呀,哈哈。不过JSer应该也会喜欢上这种模式的。。。

有一点疑惑,为啥要用apache做代理服务器呢?

我是搞php的,我感觉你这框架没有把node的优势发挥出来。 不过支持你…

嗯,确实。。

仿ASP.NET MVC的https://code.csdn.net/magicdawn/razor 就个雏形…

这也叫框架。。无语

当然可以!以下是一个简单但完整的Node.js MVC框架的示例代码。你可以根据自己的需要进一步扩展和完善它。

目录结构

/ysys-mvc
    /controllers
        index.js
    /models
        user.js
    /views
        index.ejs
    app.js
    package.json

app.js

const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');

const app = express();
const port = process.env.PORT || 3000;

// 设置模板引擎
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// 中间件
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));

// 路由
const indexRouter = require('./controllers/index');
app.use('/', indexRouter);

// 启动服务器
app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

controllers/index.js

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.render('index', { title: '欢迎使用YSYS云上元素Node.js开发框架' });
});

router.post('/submit', (req, res) => {
  const { name } = req.body;
  res.send(`Hello ${name}!`);
});

module.exports = router;

models/user.js

class User {
  constructor(name) {
    this.name = name;
  }

  sayHello() {
    return `Hello, my name is ${this.name}`;
  }
}

module.exports = User;

views/index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title><%= title %></title>
</head>
<body>
  <h1><%= title %></h1>
  <form action="/submit" method="post">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name">
    <button type="submit">Submit</button>
  </form>
</body>
</html>

package.json

{
  "name": "ysys-mvc",
  "version": "1.0.0",
  "description": "YSYS云上元素Node.js开发框架 (MVC)",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "body-parser": "^1.20.1",
    "ejs": "^4.0.0",
    "express": "^4.18.1"
  }
}

说明

  1. 目录结构controllers 存放控制器逻辑,models 存放数据模型,views 存放视图文件。
  2. app.js:初始化Express应用,并设置路由、中间件等。
  3. controllers/index.js:定义处理HTTP请求的逻辑。
  4. models/user.js:定义一个简单的数据模型类。
  5. views/index.ejs:使用EJS模板引擎渲染页面。

你可以将这些代码保存到相应的文件中,并运行 npm install 来安装依赖。然后使用 npm start 启动服务器,访问 http://localhost:3000 查看效果。希望这能帮助你理解如何构建一个简单的Node.js MVC框架。

回到顶部