Emblem.js is an indentation-based templating language that compiles to Handlebars. It is therefore
- Efficiently/easily precompilable
- Compilable in the browser
- Fully compatible with Ember.js's auto-updating templates
- Way more fun to write/maintain than
{{mustached}}
'd HTML
Check out the Emblem.js docs site http://www.emblemjs.com.
- Read the syntax documentation.
- Check out this JSBin.
- Check out this demo of an ember-rails site with Emblem enabled.
You can use Emblem to compile either to vanilla Handlebars or Emberized Handlebars. Let's assume you're compiling to Emberized Handlebars for use with an Ember app.
Follow the pattern in this JSBin:
- Include Handlebars
- Include Emblem
- Include Ember
If you have a recent enough version of Ember, all the Emblem code you
put into <script type="text/x-emblem">
tags will get compiled and
stripped out of the DOM. If you're using an out-of-date Ember, you
can trigger this to happen manually before app initialization via
Ember.onLoad('application', Emblem.compileScriptTags);
Add the following to your Gemfile:
gem 'emblem-rails'
emblem-rails
presently depends on ember-rails
. With these
two gems, any templates ending in .emblem
will be (pre)compiled
with Emblem.js.
Also, check out the demo app which uses the above configuration.
Coming extremely soon.
- emblem-rails
- barber-emblem, a
Precompilation library for Ruby (used in
ember-rails
) - emblem-brunch, Emblem support for Brunch.io
Clone the repo, then run:
bundle
rake
This will also automatically run the test suite.
For now, please refer to syntax highlighting solutions for Slim, which is not much different from Ember's. At some point, we'll have something even more custom tailored to Emblem (feel free to take a swing at it and send in a PR).
Vim users with Slim syntax highlighting can set this in
their .vimrc
s:
au BufNewFile,BufRead *.emblem set filetype=slim
- Syntax suggestions / improvements
- Syntax highlighting
- Rake pipeline
- Plugins for all sorts of frameworks
- Refactor the code to be cross-platform (browser/Node/etc). It currently is now, it's just mad ugly.
Pull Requests absolutely welcome and encouraged, just don't send me non-trivial changes without the test cases to back them up.