Compile Cirru HTML into JavaScript template function.
This project is related to Cirru HTML which compiles Cirru to HTML. This project compiles it to JavaScript instead.
They are sharing similar syntaxes on writing HTML.
Syntax:
- Jade-like(CSS Selectors) syntax for tags(with
class
andid
) (:a b)
syntax fora="b"
- tokens start with
@
are controllers (= a)
to rendera
as text(== a)
to rendera
as html
... and grammars inherited from Cirru Grammar.
Controllers:
(@ a)
to get a from resource(@if cond a b)
for conditions,b
is optional(@unless cond a b)
for conditions,b
is optional(@rich a b)
to usea.length>0
as condition(@each xs a)
for renderinga
in listxs
(@call a b c)
for runninga(a,b)
(@block a b c)
wrapa b c
in a block
npm i --save-dev cirru-html-js
For such a demo, it compiles to:
{render} = require 'cirru-html-js'
render '@if (@ a) (div b)'
(function(resource, call){
var html;
if(resource['a']){html+='<div>b</div>';}
return html;
})
...where resource
is data passed to render.
call
is an object of methods that maybe useful in template.
cd tests
coffee make.coffee test-compile # run performance tests on compiling
coffee make.coffee compile # just compile code
coffee make.coffee test-run # run performance tests on templating
Comparing to doT, Cirru HTML.js takes about 3 times of time to compile and run.
-
0.0.9
- Replace
for
withwhile
for performance
- Replace
-
0.0.8
- Add error messages and tests
-
0.0.7
- Add
@block
- Add
-
0.0.5
- Fix condition syntax is
@unless
- Fix condition syntax is
-
0.0.4
- More flexible attribute values
MIT