jadelet

Pure and simple clientside templates

Github星跟蹤圖

Build Status

Jadelet

Pure and simple clientside templates

Jadelet is the cleanest and simplest way to describe your templates. It is a breeze to learn. Jadelet attributes correspond directly with HTML attributes. If you know HTML then you already know Jadelet.

Other libraries and frameworks put up barriers between you and the DOM. Like a dutiful servant, Jadelet brings the power of the DOM into your hands.

Jadelet is the smallest of all clientside templating libraries (< 2.5kb). But don't let its size fool you: it contains tremendous power.

Jadelet is free, MIT licensed, open source, non-GMO, and production ready.

Jadelet Hello

Examples

h1= @title
HeaderTemplate = require "./header"
headerElement = HeaderTemplate
  title: "Hello world"

Button

button(click=@sayHey)
ButtonTemplate = require "./button"
buttonElement = ButtonTemplate
  sayHey: ->
    alert "heyy"

See more in the Example Playground

Getting Started

Install Jadelet:

npm install jadelet

Compile your templates:

node_modules/.bin/jadelet -d templates

This will create a .js version of each template in your templates directory.

To use the templates in a Node.js style project built with browserify you can require them normally.

// main.js
mainTemplate = require("./templates/main");

document.body.appendChild(mainTemplate(data));

Now use browserify to build the file you'll serve on your page.

browserify main.js > build.js

Road to 1.0

  • Still under 2.5kb
  • Don't Leak Resources
  • Style Attributes
  • Filters
  • Changelog
  • Example Playground
  • , for text content
  • Remove :filters
  • Updated README.md
  • jadelet.com
  • Documentation
  • Getting Started Guide

FAQ

Ewww... CoffeeScript

That's not a question.

Is Jadelet safe from XSS?

Yes. Jadelet uses native DOM APIs to write string output as text nodes.

How do I use Jadelet to render HTML Elements?

Jadelet knows the type of objects it renders. When you pass an HTMLElement it will insert it into the DOM.

.content
  h1 My Canvas
  = @canvas
Template
  canvas: document.createElement('canvas')

Is it production ready?

Yes, we're currently using Jadelet to power glitch.com. (Though we still have a 'Beta' sticker up... ¯\_(ツ)_/¯)

Is it performant?

Yes! And because it's just DOM stuff you can easily drop down to the native DOM APIs for the pieces of your app that need special optimization.

How can I contribute?

Open some issues, open some pull requests, let's talk it out :)

History

Jadelet was inspired by Haml and Jade.

Gotchas

Templates must have only one root element, they will fail with multiple.

Good:

.root
  .one
  .two

Oopsies:

.one
.two

CLI

Command line interface for compiling templates.

Usage

Jadelet in, JavaScript out.

jadelet < template.jadelet > output.js

echo "h1#title= @title", jadelet

Options

-d, --directory [directory] Compile all .jadelet files in the given directory.

jadelet -d templates

--encoding [encoding] Encoding of files being read from --directory (default 'utf-8')

--exports, -e [name] Export compiled template as (default 'module.exports')

--extension [ext] Extension to compile when compiling files from a directory. Default is jade(let)? so it should pick up both .jade and .jadelet files.

--runtime, -r [runtime_name] Specifies the name of the globally available Jadelet runtime (default is 'require("jadelet")').

jadelet -r "Jadelet" < template.jadelet > output.js

--ast, -a Output a JSON AST instead of the JavaScript template function. Useful for debugging or for using the Jadelet DSL as a frontend for other renderer backends like Mithril or React. Until 1.0 this isn't guaranteed to be a stable format.

主要指標

概覽
名稱與所有者STRd6/jadelet
主編程語言JavaScript
編程語言Shell (語言數: 2)
平台
許可證MIT License
所有者活动
創建於2014-05-08 01:28:07
推送於2024-07-28 17:17:38
最后一次提交2024-07-28 10:17:34
發布數0
用户参与
星數379
關注者數10
派生數11
提交數196
已啟用問題?
問題數19
打開的問題數3
拉請求數16
打開的拉請求數5
關閉的拉請求數6
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?