Skip to content
This repository

Static Site Non-Framework

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE initial commit January 15, 2010
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 VERSION
Octocat-spinner-32 frank.gemspec
README.md

Frank

Inspired by Sinatra's simplicity and ease of use, Frank lets you build static sites using your favorite libs, painlessly. It uses Tilt, so it comes with support for Haml & Sass, Builder, ERB, Liquid, & Mustache.

Frank also supports CoffeeScript for writing JavaScript in style, and LESS is planned for the near future.

Overview

Create a new project with:

$ frank <project_name>

Then start up the server with:

$ frankup

-----------------------
 Frank's holdin' it down...
 0.0.0.0:3601

And you're ready to get to work. Feel free to use as much or a little of the available libs as you please. Frank works just as well with Mustache / CSS / JavasScript as Haml / Sass / CoffeeScript.

Views & Layouts

All of your templates, and less/sass/coffeescript go into <project>/dynamic, by default. You are more than welcome to organize them into subfolders if you've got lots.

Views

Writing views is simple. Say you've got a blog.haml, in <project>/dynamic just browse to http://0.0.0.0:3601/blog and your view will be parsed and returned as html.

Layouts

Layouts are also simple with Frank. By default, just create a layout.haml (or whichever language you like best), that contains a yield, and any views will be inserted into it at that point.

Multiple layouts are also easy. In your settings.yml, do something like:

layouts:
    - name: blog_layout
      only: [blog]
    - name: normal
      not: [blog, ajax]

This tells Frank to use blog_layout.haml for /blog, and normal.haml for everything but /blog' and '/ajax.

Partials & Helpers

Frank comes with a helper method, render_partial, for including partials in your views.

In addition, you can also easily add your own helper methods to use.

Partials

To create a partial, make a new file like any of your other views, but prefix its name with an underscore.

For example, if I have a partial named _footer.haml, I can include this in my Haml views like this:

= render_partial 'footer'

Helpers

Helper methods are also easy. Just open up helpers.rb and add your methods to the FrankHelpers module; that's it. Use them just like render_partial.

GET/POST params

Sometimes it's nice to include user input in your mock-ups. It's especially handy when mocking-up Ajax-driven elements. For this reason, the request and params are available in your templates.

For example, to use a person's name submitted through a form you might do:

%h1= "Hello, #{params.name}"

Configuration

In settings.yml, you can change your folder names, and server port & host name. Check the comments there if you need help.

Once you've gotten comfortable with Frank, you will probably no longer want the example files included whenever you start a new project. You may also have preferred folder names, and languages that you always want to start projects with.

To do this, create a new base project. Then just copy your base project to ~/.frank. This folder will then be copied for you whenever you run the frank command.

Installation

Gemcutter

$ gem install frank
Something went wrong with that request. Please try again.