Barefoot makes code sharing between browser and server reality. Write your application once and run it on both ends of the wire.
JavaScript Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.naturaldocs
.travis
lib
test
.gitignore
.jshintignore
.jshintrc
.npmignore
.travis.yml
CHANGES.md
LICENSE.md
Makefile
README.md
barefoot.png
index.js
package.json

README.md

barefoot

Barefoot makes code sharing between browser and server reality. Write your application once and run it on both ends of the wire.

It builds upon the popular Backbone.JS library and keeps its own additions as unobtrusive as possible.

Server side execution is accomplished by using Node.JS and Express.JS. Once delivered to the users browser, no additional JavaScript libraries are needed when configured properly.

If you implement your views with care, your application will match the Unobtrusive JavaScript principle completely.

Build Status Coverage Status

Installation

npm install node-barefoot

Documentation

The latest version of the code documenation is available here:

To generate a set of documentation locally, make sure you have NaturalDocs installed on your system. To build the documentation into the docs subdirectory, simply run make docs on your command line.

githalytics.com alpha

Contribute

We are happy for any community contribution. For questions, feature requests or problems, please fill in an issue.

Feel free to fork and optimize barefoot here on Github. If you have a pull request with some cool additions, please make sure you have unit test cases ready.

Barefoot vs. Rendr

When barefoot started to get developed, there was only one library which points into a similar direction as barefoot does: Rendr by airbnb accomplishes a client/server rendering with the same code base too. Eventhough it extends Backbone.JS as barefoot does, there are some importent differences between the two frameworks (or library when talking of Rendr):

  • Rendr forces you to use Handlebars, whereas you're free of any templating engine when using barefoot.
  • Barefoot has browserify, or more precisely its Express.js middleware counterpart browserify-middleware built in. Just one optimized code file will be transfered to your client.
  • Rendr makes heavy use of CoffeeScript. Barefoot is pure JavaScript without any precompilation shizzle.
  • Where Rendr checks many times if it is running on the server or in the browser, barefoot uses mixins after an initial environment check.

Barefoot and Rendr are both far away from being perfect and production-ready. Try both and see what fits best for your use case. Or even better, help improving them :)

History of barefoot

The idea behind and the code of barefoot was initially developed as part of a bachelors thesis by @mekanics, @mweibel and @swissmanu during springtime 2013. We decided to decouple its logic into a distinct library early and made it available to the public here.