quick-server

Is a small web server stub for NodeJS/Express/Hogan and can be run directly or require'd into a script.
Uses Express, Hogan-Express templates, allows you to set port, catch errors, app path, statics the current directory, without all the boilerplate.

####Quick-Server Is web server helper for NodeJS/Express/Hogan and can be run directly or require'd into a script.
Its for doing stuff, without all the boilerplate.

###Install

$ npm install quick-server
OR
$ npm install quick-server -g
$ quick-server

###Require into a script - all params are optional

require('quick-server')({
    port: 4000, 
    ip:'127.0.0.1', 
    session:'mysesskey', 
    errors: 1,
    ssl:'myhost.com',
    logport: 8081,
    debug: 1
}, function(app){
    console.log(app.debug);
})

###Use env instead of options

test.js --
require('quick-server')(null, function(app){
    console.log(app.debug);
})
 
$ port=81 node test.js

####Hogan/Mustache.js rendering

app.hogan(template_filename, obj)  --OR--
res.render(template_filename, obj)

####s.return

// Return NodeJS style error/results object to browser
 
app.get('/api/name', function(r, s){
    s.return(null, {name: 'quicker'});
})
  ** to browser ==> {e:null, {r: {name:'quicker'}}}

####s.render

// Takes file name or string as a template
 
app.get('/', function(r, s){
    s.render('Hi {{name}}', {name: 'there'});
})

####Experimental support for partials.. index.html

Hi there {{>part.html}}

part.html

{{name}}, how ru?

server.some.js

module.exports = function(options, app){
    console.log('module loaded');
 
    app.get('/s', function(r, s){
        s.render('index.html', {name: 'chris'});
    })
}

###Use Express sessions

$ session=mysecretisthis quick-server

###SSL

$ ssl=mydomain.com quick-server
 
OR
 
Two steps to run as SSL/HTTPS server:
 
1)
require('quick-server')({ssl: 'mydomain.com'}, function(options, app){
    ...
}
 
2)
Put these files in the current directory:
 
mydomain.com.key
mydomain.com.intermediate.crt (called gd_bundle if gotten from GoDaddy)
mydomain.com.cert

###Logging in browser

require('quick-server')({ logport: 8081 }, function(app){
    ...
})
 
// In HTML
<script src='/log'></script>
 
log();      // Server Console.Log is now websocketed to the browser
            // view in the browser console
logstop();  // Stop that
 

###Browser JS

// In HTML
 
// JQuery, Bootstrap JS, and the helpers below
<script src='/j.js'></script>
 
// localStorage helpers
_localStorage.set = function(n, o)
_localStorage.get = function(n)
_localStorage.array = function(n, f, p)
 
// client-side Mustache rendering
_render(template, object, callback)
 
// time helper
_time(); dosomething(); _time(); // displays time it takes to dosomething
 
// Websocket client - server should send node style {e: error, r: result}
_ws('ws://localhost:8081', function(e, r){
    if(e) throw(e);
    console.log(r);
})
 
// POST - quick-server s.returns node style error, results
_post = function(url, data, function(e, r){
    if(e) throw(e);
    ...
})
 
// JQuery helpers
 
<div id='mydiv'></div>
 
$('#mydiv').render('Hello {{name}}', {name: 'there'})
 
.renderLocal('Hello {{name}}')  // localStorage key mydiv = {name: 'there'}
.renderPost('Hello {{name}}', 'http://localhost/api/getsometh', {value: 'name'})
.renderSocket('Hello {{name}}', 'ws://localhost:8081')  // socket gets object and renders to templ