Skip to content
This repository has been archived by the owner on Jul 16, 2019. It is now read-only.
/ starfruit Public archive

A compact and intelligent web application framework for Node.js.

License

Notifications You must be signed in to change notification settings

kankungyip/starfruit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


        _/_/_/    _/                              _/_/                      _/    _/      
     _/        _/_/_/_/    _/_/_/  _/  _/_/    _/      _/  _/_/  _/    _/      _/_/_/_/   
      _/_/      _/      _/    _/  _/_/      _/_/_/_/  _/_/      _/    _/  _/    _/        
         _/    _/      _/    _/  _/          _/      _/        _/    _/  _/    _/         
  _/_/_/        _/_/    _/_/_/  _/          _/      _/          _/_/_/  _/      _/_/      

A compact and intelligent web application framework for Node.js.

中文介绍.

Installation

$ sudo npm install -g starfruit

Features

  1. Compact, only 3 core files
  2. Intelligent, automatic route load file
  3. Automatic, add and modify the code without shutting down the server, and automatically compile load
  4. Security, automatically restart when the server crashes
  5. Multi-core take advantage of multi-core processing, multi-process server
  6. Real-time, real-time monitoring server command-line tool

Quick Start

Simple web server

All static resource files in MyProject/pub folder.

// index.js
var sf = require('starfruit')
  , fs = require('fs');

app = sf();
app.log(fs.createWriteStream('./logger.log', { flags: "a" }));
app.listen(8080);

HTTPS server:

// index.js
var sf = require('starfruit')
  , fs = require('fs')
  , https = require('https');

app = sf();
app.log(fs.createWriteStream('./logger.log', { flags: "a" }));

var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

https.createServer(options, app).listen(9090);

Dynamic controller

For controlling the flow of the application, which handles the events and to respond. "Events" includes changing the user's behavior and data model.

All dynamic files (.js) in MyProject/lib folder, CoffeeScript source files (.coffee) in MyProject/src folder, resource files (.layout) in MyProject/res folder.

// app.js
// route: yoururl.com/app
var fs = require('fs')
  , sf = require('starfruit');

module.exports = app = new sf.Controller();

app.init = function() {
  $ = this;
  $.title = 'Starfruit';
  $.layout = 'res/app.layout';
};

app.timeClick = function() {
  $ = this;
  $.model({
    time: ["text", "style"]
  });
  if ($.data) {
    $.data.time.text = new Date().toString();
    $.data.time.style = 'color:blue';
  }
};

app.helloClick = function() {
  $ = this;
  $.model({
    username: "value",
    message: "text"
  });
  if ($.data) {
    if ($.data.username) {
      $.data.message = 'hello ' + $.data.username + ', welcome to starfruit world.';
    }
  }
};

or maybe you more like CoffeeScript codes:

# app.coffee
# route: yoururl.com/app
fs = require 'fs'
{Controller} = require 'starfruit'

module.exports = class App extends Controller
  init: ->
    @title = 'Starfruit'
    @layout = 'res/app.layout'

  timeClick: ->
    @model
      time: ["text", "style"]
    return unless @data
    @data.time.text = new Date().toString()
    @data.time.style = 'color:blue'

  helloClick: ->
    @model
      username: "value"
      message: "text"
    return unless @data
    @data.message = "hello #{@data.username}, welcome to starfruit world." if @data.username

app.layout contents:

<p><img src="/logo.jpg" /></p>
<p>Server time: <span style="color:red" id="time">...</span>
  <input type="button" value="Get" onclick="selector('timeClick')" />
</p>
<p>Your name:
  <input id="username" type="text" />
  <input type="button" value="Hello" onclick="selector('helloClick')" />
  <p id="message"></p>
</p>

Customized server status code page

Use _<status code>.html file to customize the server status code page, such as _404.html. All server status code page must in MyProject/pub folder or customized static content folder.

Command line tool

  • $ cd MyProject
  • Boot server(enter real-time command line tool) $ starfruit or $ sf
  • Add server process(maximum number of processes CPU cores) add <num>
  • List all server processes list or ls
  • Shutdown a process remove <pid> or rm <pid>
  • Quit quit

APIs

Histroy

See histroy.

License

See LICENSE.

Copyright (c) 2014 Kan Kung-Yip

About

A compact and intelligent web application framework for Node.js.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages