37
All Template Languages Suck

Spitfire: Template Lightning Talk

Embed Size (px)

DESCRIPTION

Lightning talk about the new Python-based template language called Spitfire. Given at the Plone Conference 2007 in Naples, Italy by Alexander Limi — http://limi.net

Citation preview

Page 1: Spitfire: Template Lightning Talk

AllTemplate

LanguagesSuck

Page 2: Spitfire: Template Lightning Talk

aka

Page 3: Spitfire: Template Lightning Talk

Why another template

language?

Page 4: Spitfire: Template Lightning Talk

Because we can™

Page 5: Spitfire: Template Lightning Talk

(Who’s “we”?)

Page 6: Spitfire: Template Lightning Talk

Mike / YouTube

Page 7: Spitfire: Template Lightning Talk

(f**king genius)

Page 8: Spitfire: Template Lightning Talk

Yours truly

Page 9: Spitfire: Template Lightning Talk

(markup obsessive)

Page 10: Spitfire: Template Lightning Talk

Also, because

Page 11: Spitfire: Template Lightning Talk

AllTemplate

LanguagesSuck

Page 12: Spitfire: Template Lightning Talk

Why do they suck?

Page 13: Spitfire: Template Lightning Talk

Let me count the ways…

Page 14: Spitfire: Template Lightning Talk

Either they look like this

Page 15: Spitfire: Template Lightning Talk

UGLY

<p class=”<?php someClass() ?>”><?php callSomeFunction() ?></p>

Page 16: Spitfire: Template Lightning Talk

Or they perform like this

Page 17: Spitfire: Template Lightning Talk
Page 18: Spitfire: Template Lightning Talk

We can do better

Page 19: Spitfire: Template Lightning Talk

We want

Page 20: Spitfire: Template Lightning Talk

NICE

<p tal:content=”context/something”

>Text goes here</p>

Page 21: Spitfire: Template Lightning Talk

and

Page 22: Spitfire: Template Lightning Talk
Page 23: Spitfire: Template Lightning Talk

What are your current options?

Page 24: Spitfire: Template Lightning Talk

•TAL

•Genshi

•Myghty/Mako

•Cheetah

•Your own

Page 25: Spitfire: Template Lightning Talk

Let’s do a simple benchmark

Page 26: Spitfire: Template Lightning Talk

Standardized test

bigtable.pyhttp://genshi.edgewall.org/wik

i/GenshiPerformance

· obviously synthetic· 10×1000 table render

· measures pure throughput

Page 27: Spitfire: Template Lightning Talk

Rendering times

Page 28: Spitfire: Template Lightning Talk
Page 29: Spitfire: Template Lightning Talk
Page 30: Spitfire: Template Lightning Talk

100% Python goodness

Page 31: Spitfire: Template Lightning Talk

Current version:

Compiler: ~2000 LoC

Runtime: 150 LoC

Page 32: Spitfire: Template Lightning Talk

Compiles templates to

bytecode

Page 33: Spitfire: Template Lightning Talk

Pluggable syntax

Page 34: Spitfire: Template Lightning Talk

Both XML and text modes

Page 35: Spitfire: Template Lightning Talk

Rendering times

Page 36: Spitfire: Template Lightning Talk

Rendering times

Page 37: Spitfire: Template Lightning Talk

Rendering times