Nodejs:接触一周了,这几天花时间写了个简单的MVC开发框架
Nodejs:接触一周了,这几天花时间写了个简单的MVC开发框架
名字想好了,就叫
YSYS云上元素Node.js开发框架(MVC)
等我把代码整理到git上,希望大家多多吐槽…
当然可以。以下是一个简化的 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"
}
}
说明
- 目录结构:
controllers
存放控制器逻辑,models
存放数据模型,views
存放视图文件。 app.js
:初始化Express应用,并设置路由、中间件等。controllers/index.js
:定义处理HTTP请求的逻辑。models/user.js
:定义一个简单的数据模型类。views/index.ejs
:使用EJS模板引擎渲染页面。
你可以将这些代码保存到相应的文件中,并运行 npm install
来安装依赖。然后使用 npm start
启动服务器,访问 http://localhost:3000
查看效果。希望这能帮助你理解如何构建一个简单的Node.js MVC框架。