_/_/_/ _/ _/_/ _/ _/
_/ _/_/_/_/ _/_/_/ _/ _/_/ _/ _/ _/_/ _/ _/ _/_/_/_/
_/_/ _/ _/ _/ _/_/ _/_/_/_/ _/_/ _/ _/ _/ _/
_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
_/_/_/ _/_/ _/_/_/ _/ _/ _/ _/_/_/ _/ _/_/
A compact and intelligent web application framework for Node.js.
中文介绍.
$ sudo npm install -g starfruit
- Compact, only 3 core files
- Intelligent, automatic route load file
- Automatic, add and modify the code without shutting down the server, and automatically compile load
- Security, automatically restart when the server crashes
- Multi-core take advantage of multi-core processing, multi-process server
- Real-time, real-time monitoring server command-line tool
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);
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>
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.
$ 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
orls
- Shutdown a process
remove <pid>
orrm <pid>
- Quit
quit
See histroy.
See LICENSE.
Copyright (c) 2014 Kan Kung-Yip