个人作品:Nodejs轻巧、智慧的网络应用框架 - starfruit 0.2.0

个人作品:Nodejs轻巧、智慧的网络应用框架 - starfruit 0.2.0

边学习nodejs边完成的一个简洁的框架,希望和大家一起探讨技术,代码有很多不完美的地方,也是我在努力学习改进的。

特点

  1. 轻巧,只有3个核心文件
  2. 智慧,根据用户请求自动加载 Controller 文件
  3. 安全,Controller 沙箱运行、崩溃自动重启
  4. 自动,增加新的 Controller 代码无需关停服务器,自动编译加载
  5. 多核,充分利用多核处理,多进程服务器
  6. 实时,命令行工具实时监控服务器

资源

GitHub: https://github.com/kankungyip/starfruit NPM: https://www.npmjs.org/package/starfruit Demo: http://pan.baidu.com/s/1jGuUeZs


6 回复

个人作品:Nodejs轻巧、智慧的网络应用框架 - starfruit 0.2.0

边学习Node.js边完成的一个简洁的框架,希望和大家一起探讨技术,代码有很多不完美的地方,也是我在努力学习改进的。

特点

  1. 轻巧,只有3个核心文件。
  2. 智慧,根据用户请求自动加载Controller文件。
  3. 安全,Controller沙箱运行、崩溃自动重启。
  4. 自动,增加新的Controller代码无需关停服务器,自动编译加载。
  5. 多核,充分利用多核处理,多进程服务器。
  6. 实时,命令行工具实时监控服务器。

示例代码

starfruit是一个非常简单的框架,下面展示如何创建一个简单的Controller以及如何启动服务器。

创建Controller

假设我们有一个简单的Controller UserController,它位于 controllers/UserController.js

// controllers/UserController.js
module.exports = class UserController {
    constructor() {
        this.name = 'UserController';
    }

    index(req, res) {
        res.send('Hello from UserController');
    }
};
启动服务器

starfruit的核心文件之一是 server.js,它负责启动服务器并自动加载Controller文件:

// server.js
const starfruit = require('starfruit');

starfruit.init({
    port: 3000,
    controllerPath: './controllers'
});

console.log('Server started on port 3000');

在这个例子中,starfruit.init 方法接受一个配置对象,其中指定了端口和Controller文件所在的路径。当有用户请求时,starfruit会自动加载对应的Controller文件,并调用相应的函数(例如,访问 /user 会触发 UserController.index 函数)。

资源

通过以上示例,我们可以看到starfruit框架的简单易用性。它利用Node.js的模块化特性,使得开发Web应用变得非常轻松。希望这个框架能够帮助更多的人快速搭建高效、稳定的网络应用。


高手!能解释一下动态页面控制器的使用场景吗?看了介绍还是不太明白。

动态页面控制器用于动态生成页面内容并返回给浏览器,同时与用户产生数据交互,例如用户提交数据动态页面控制器根据用户提交的数据对页面内容进行修改。现在还没有完成数据模型这一块,还不能完整的交换数据,仅仅能对页面的事件做出一些简单的响应。我希望的是通过动态页面控制器来完成浏览器端和服务器端的同时开发,不分前后端两次开发,只需要通过一个动态页面控制器就能对浏览器提交数据和服务器处理数据进行同时控制。

楼主以前是做web开发的么?你说的那些好像现在的框架都有啊,controller沙箱运行怎么能实现业务需求和系统需求的分开呢。

我以前也不是做web开发的,我只是业余爱好。

个人作品:Nodejs轻巧、智慧的网络应用框架 - starfruit 0.2.0

简介

边学习Node.js边完成的一个简洁的框架,希望和大家一起探讨技术。虽然代码还有很多不完美的地方,但我会持续改进。

特点

  1. 轻巧:整个框架只有3个核心文件,易于理解和维护。
  2. 智慧:能够根据用户的请求自动加载Controller文件。
  3. 安全:Controller在沙箱中运行,并且崩溃后能自动重启。
  4. 自动:增加新的Controller代码无需关停服务器,自动编译并加载。
  5. 多核:充分利用多核处理器,支持多进程服务器。
  6. 实时:提供命令行工具,可以实时监控服务器状态。

示例代码

核心文件结构
starfruit/
├── app.js
├── config.js
└── server.js
app.js
const starfruit = require('starfruit');
starfruit.init();
config.js
module.exports = {
    port: 3000,
    controllerDir: './controllers',
};
server.js
const http = require('http');
const config = require('./config');

const server = http.createServer((req, res) => {
    const path = req.url.slice(1);
    starfruit.loadController(path)(req, res);
});

server.listen(config.port, () => {
    console.log(`Server is running on port ${config.port}`);
});
controllers/home.js
module.exports = function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, World!');
};

如何使用

  1. 安装starfruit
    npm install starfruit
    
  2. 初始化项目:
    node app.js
    

GitHub & NPM

Demo


通过以上代码示例,你可以看到如何使用starfruit来构建一个简单的HTTP服务器,并根据不同的路径加载不同的Controller。希望这可以帮助你理解starfruit的基本工作原理。

回到顶部