Oct 16 2010
- 04/10/2011 - Updated application.js and application.rb thanks to @rebo's comments
In this article, I will walk through some simple steps to get a [demo app][2] up and running with [Backbone.js][3] and [Sinatra][4] on [Heroku][5].
#!/usr/bin/env ruby | |
# coding: UTF-8 | |
require 'yaml' | |
ALIAS = { | |
text: '/vendor/requirejs-text/text', | |
jquery: '/vendor/jquery/dist/jquery', | |
dust: '/vendor/dustjs-linkedin/dist/dust-full', | |
dustHelpers: '/vendor/dustjs-linkedin-helpers/dist/dust-helpers', | |
pagejs: '/vendor/page.js/page', |
function addKeepAliveTimeout(agent) { | |
function fail(msg) { | |
console.warn(msg + ', node version: ' + process.version); | |
return agent; | |
} | |
// Check it's what we expect | |
var old_listeners = agent.listeners('free'); | |
if (!old_listeners || old_listeners.length !== 1) { | |
return fail('Unexpected lacking "free" listener'); | |
} |
DEPLOYER='deployer' | |
DEPLOYER_HOME="/home/$DEPLOYER" | |
PROJECT_NAME='node-js-sample' | |
PROJECT_REPO='https://github.com/heroku/node-js-sample.git' | |
# Provisining an ubuntu server | |
apt-get -y update | |
apt-get -y upgrade | |
apt-get -y install software-properties-common | |
add-apt-repository ppa:chris-lea/node.js |
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | |
<title>Backbone.js • TodoMVC</title> | |
<link rel="stylesheet" href="../../assets/base.css"> | |
<!--[if IE]> | |
<script src="../../assets/ie.js"></script> | |
<![endif]--> |
package com.linkedin.dust.renderer; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import java.io.Reader; | |
import java.io.Writer; | |
import org.mozilla.javascript.Context; | |
import org.mozilla.javascript.JavaScriptException; |
// index.html -- Sending message TO service worker, FROM page: | |
navigator.serviceWorker.controller.postMessage(message); | |
// service-worker.js -- Handling message event in service worker by posting a message back to the page: | |
self.addEventListener('message', function(event) { | |
self.clients.matchAll().then(function(client) { | |
client[0].postMessage({ | |
command: 'logMessage', | |
error: null, | |
message: 'hi there message here!!' |
var express = require('express'); | |
var app = express(); | |
var port = process.env.PORT || 5000; | |
var request = require('request'); | |
var zlib = require('zlib'); | |
require 'rspec' | |
describe "Behaviour" do | |
it "should pass" do | |
true.should eq true | |
end | |
it "should fail" do | |
true.should eq false | |
end |
# Template composition with inclusion | |
Every template language I have seen provides some mechanism for one template to include another, thus supporting the reuse of repeated elements like headers and footers. The included templates are called partials in Mustache parlance: | |
```html | |
<!-- home.hbs --> | |
<html> | |
<body> | |
{{> header}} | |
<p> HOME </p> | |
{{> footer}} |