starfruit

0.2.3 • Public • Published

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

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

Package Sidebar

Install

npm i starfruit

Weekly Downloads

1

Version

0.2.3

License

MIT

Last publish

Collaborators

  • kankungyip