Skip to content
T - a javascript template engine
JavaScript CoffeeScript CSS Ruby LiveScript Objective-C
Find file
Latest commit d2907e7 @gcao Minor changes

README.md

T.js - a simple & powerful template engine

DESCRIPTION

T.js is a template engine that uses simple Javascript data structure to represent html/xml data.

BASIC RULES

  • A tag is represented by an array;
  • First item is the tag name, and id and css classes if present, e.g. 'div#id.class1.class2';
  • Rest of the array contains the tag's attributes, text or child tags;
  • Attributes are stored in hash, e.g. {"name": "username", "type": "text"};
  • Text values are strings, e.g. "This is sample content";
  • Child tags are in child arrays;
  • Texts and child tags are rendered sequentially.

USAGE

  • Include T.js in HTML
<script src="PATH_TO/t.js"></script>
  • Define template
var template = ["a.edit", {href: "/edit"}, "Edit"]
  • Render
var result = T(template).toString()
  • Result is like
<a class="edit" href="/edit">Edit</a>

EXAMPLES

EXAMPLE 1: A simple template that uses data

var template = function(account){
  return ['div.account',
    ['div.header', 'Account Info'],
    ['div.label', 'Name'],
    ['div', account.name],
    ['div.label', 'Age'],
    ['div', account.age]
  ];
}
var account = {
  name: 'John Doe',
  age: 25
};
var result = T(template(account)).toString();
// result is like below (after formatted)
// <div class="account">
//   <div class="header">Account Info</div>
//   <div class="label">Name</div>
//   <div>John Doe</div>
//   <div class="label">Age</div>
//   <div>25</div>
// </div>

EXAMPLE 2: A simple TODO list

DEVELOPMENT SETUP (MAC)

$ git clone git://github.com/gcao/T.js.git
$ cd T.js

$ brew install node
$ npm install coffee-script

$ gem install bundler
$ bundle
$ guard

NOTES

  • Run with LiveReload support: thin -p 8000 start

  • Run with no external dependency: cd public && python -m SimpleHTTPServer

  • Open Demo Page: open http://localhost:8000

  • Run Jasmine tests in browser: open http://localhost:8000/spec_runner

  • Convert between html and T: bin/html2t spec/fixtures/test.html bin/html2t spec/fixtures/test.html | bin/t2html

  • Convert T to CoffeeScript (js2coffee has to be installed): bin/html2t spec/fixtures/test.html | js2coffee

  • Convert haml to html to T template to html: bundle exec bin/haml2erb spec/fixtures/test.haml | HTML_FRAGMENT=true bin/html2t | bin/t2html

  • Integrate with Jasmine Headless WebKit: Config file is located at public/javascripts/spec/jasmine.yml jasmine-headless-webkit -c -j public/javascripts/spec/jasmine.yml

CREDITS

  • I got the basic idea of T.js from LM.JS but has implemented from scratch with several additional interesting features.

COPYRIGHT

Copyright (c) 2013 Guoliang Cao. See LICENSE.txt for further details.

Something went wrong with that request. Please try again.