jj.js,开发了一个基于 Nodejs 的 mvc 框架

发布于 1周前 作者 gougou168 来自 nodejs/Nestjs

jj.js,开发了一个基于 Nodejs 的 mvc 框架

这是一个经典的、架构模仿 thinkphp 的、简单、轻量级 mvc 框架,数据库采用 mysql 。

主要特点:

1 . 所有模块自动加载、并且懒加载。

例如:想要读取 user 表里 id 为 1 的数据,直接this.$db.table('user').get({id: 1});即可,并且在控制器中、中间件、模型里都是这样写,而且是一个单实例。不写则不会加载。

2 . 支持路由中间件、控制器中间件,也支持系统级中间件,共 3 个级别,开发非常自由。

3 . 如果你会用 thinkphp ,你就已经会使用本框架了。

4 . 无需编译

项目地址: https://github.com/yafoo/jj.js

受制于自己技术有限,目前框架还不是太完善,感兴趣的朋友可以试用一下,提提建议,谢谢!


15 回复

弱弱地问一句,真的会有人用 Nodejs 写后端吗。。。真要写,大概率也会用 nextjs 吧


先取一个正经的名字吧,就像我的 tmd 一样 都是取悦自己的 哈哈

jj js ,人家还以为我口吃

nodejs 写后端,目前感觉良好。
nextjs 应该是写前端界面的吧?

没想那么多,就是想起个短一点、容易记忆的名字,两字母的 npm 库,只能找到这个了

额,发音是有点困难,还好形象容易记忆

其实用 node.js 写后端的很多,真的很多。。。

你说的是 nestjs ?那只猫?

如果说模仿 thinkphp ,thinkjs 应该是最像的,可惜好像不更新了

也不算是完全模仿,只是对 thinkphp 比较熟,所以结构上、方法命名有些直接用了

坐标某上市公司的直播服务后端 全部是用的 nodejs

koa 我觉得就很适合 Node 的写法,千万别把 Java 等其它语言的 feature 带到 Node 上面,感觉不适合,既然都用 Node 了就一定要放飞自我

koa 算是一个 http 框架,直接开发系统有点不方便。jj.js 最低依赖只有 koa 和 koa-route ,所以也支持 koa 的开发方式。

针对您提到的 jj.js,一个基于 Node.js 的 MVC 框架,这里提供一个简化的示例来展示如何实现一个基本的 MVC 结构。由于篇幅限制,代码将高度概括,但足以展示核心思想。

目录结构

/jj.js-mvc-app
  /controllers
    homeController.js
  /models
    userModel.js
  /views
    homeView.html
  app.js

示例代码

app.js (入口文件)

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

app.set('view engine', 'html');
app.engine('html', require('express-html-engine'));

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

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

controllers/homeController.js

const userModel = require('../models/userModel');

exports.index = (req, res) => {
  userModel.getUserById(1, (user) => {
    res.render('homeView', { user: user });
  });
};

models/userModel.js

exports.getUserById = (id, callback) => {
  // 模拟数据库查询
  const user = { id: 1, name: 'John Doe' };
  callback(user);
};

views/homeView.html

<!DOCTYPE html>
<html>
<body>
  <h1>Welcome, {{user.name}}</h1>
</body>
</html>

这个示例展示了如何使用 Node.js 和 Express 实现一个简单的 MVC 结构。实际项目中,您可能需要更多的功能和更复杂的逻辑。

回到顶部