ci 模板html,cirru-html

Template engine that converts Cirru to HTML

Cirru HTML

A template engine that converts Cirru to HTML.

Usage

npm install --save cirru-html{makeRender, render, setResolver} = require 'cirru-html'

code = 'span (= cirru code)'

data = {}

renderer = makeRender code, {}

renderer {} # pass in data # => 'cirru code'

render code, data # => 'cirru code'makeRender

template is a code string in Cirru,

or a JSON Object of parsed Cirru code (with cirruParser.pare).

renderer is a cached renderer that make it fast.

data is optional.

In Node, you need data['@filename'] to run @insert and @partial.

render

Shorthand for using renderer in one call:

exports.render = (template, data) ->

render = exports.makeRender template, data

render datasetResolver

Solution for reading file is taken out from the module.

For Node:

html = require 'cirru-html'

html.setResolver (basePath, child, scope) ->

dest = path.join (path.dirname basePath), child

scope?['@filename'] = dest

html = fs.readFileSync dest, 'utf8'For browsers, maybe from an element:

setResolver (basePath, child, scope) ->

match = child.match /(\w+)\.cirru/

element = q "##{match[1]} .file"

element.value or element.innerHTML

Demo of HTML

Here's a demo of HTML:

doctype

html

head

title "Cirru HTML"

meta $ :charset utf-8

link (:rel stylesheet) $ :href css/style.css

script (:defer) $ :src build/build.js

body

#entry

@repeat (@ names)

.test

:id (@ @value)

textarea.file

textarea.data

button.button " =>"

textarea.result

Notice: the compiled HTML is not prettified.

Template engine

@

@if

@block

@repeat

@with

@insert

@partial

Functions may also be passed into the renderer to apply on the data.

Architeture

Steps of rendering:

Cirru Code

-> Syntax Tree

-> Abstract Syntax Tree, based on Classes

-> Cached Tree, HTML data converted

-> Rendering

Classes for rendering HTML:

SingleTag

PairTag

TextTag

Classes for expressions

AtExpression

IfExpression

RepeatExpression &key, &value

WithExpression

InsertExpression

PartialExpression

BlockExpression

MethodsExpression

Filenames passed to @insert and @partial are only names.

data parameters contain at least @filename and @methods: [].

Changelog

0.2.2

Fixed double quote in some attributes

0.2.1

Fixed with

Since 0.2, renderer is removed

License

MIT

HomePage

Repository

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值