SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
with Templating
   Engines




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   1
udayms
                 about.me/udayms




April 23, 2012            twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   2
Prototyping

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   3
Making
ideas and
designs
REAL
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   4
Quick


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   5
Iterative


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   6
Pixel Perfect


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   7
Real Data


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   8
Complete
Flows

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   9
Small &
Portable

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   10
Almost
‘Production
Quality’
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   11
How?


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   12
Templating
Frameworks

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   13
WTF is that?


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   14
Frameworks that
allow bring in
science to FE
Development


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   15
There are
server side
ones and client
side ones.


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   16
Let’s talk
client side
Templates



April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   17
Focus on
Logic-less
Templates



April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   18
Why?


April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   19
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   20
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   21
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   22
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   23
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   24
Let’s take a
simple example

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   25
<div>



Template                                                              <span> {{first_name}} </span>
                                                                      <span> {{second_name}} </span>
                                                                      <br/>
                                                                      <span> {{city}} </span>

                                                             </div>




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms              26
JSON
                                                             {
                                                                      “first_name” : “Uday”,
                                                                      “second_name” : “Shankar”,
                                                                      “city” : “Bangalore”
                                                             }




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms          27
Compiled                                                     <div>

                                                                      <span> Uday </span>



HTML
                                                                      <span> Shankar </span>
                                                                      <br/>
                                                                      <span> Bangalore </span>

                                                             </div>




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms        28
Rendered
Output
                                                             Uday Shankar
                                                             Bangalore




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   29
Looks like too much
work to print three
words?
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   30
<h1> {{heading}} </h1>

                                                    <ul>




Template
                                                            {{#tweeters}}

                                                            <li>{{name}} [@{{twitter_handle}}]</li>

                                                            {{/tweeters}}

                                                    </ul>

                                                    <h2> {{hashtag}} </h2>




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms             31
{
                                         “heading” : “I follow them…”,
                                         “tweeters” : [



JSON
                                              {“name”: “Harish”,“twit_handle”: “hsivaram”},
                                              {“name”: “Amit”,“twit_handle”: “amit_pande”},
                                              {“name”: “Snook”,“twit_handle”: “snookca”},
                                              {“name”: “Mrinal”,“twit_handle”: “mrinal”},
                                              {“name”: “Sudar”,“twit_handle”: “sudarmuthu”},
                                                        ],
                                         “hashtag”: “#metarefresh”
                                 }




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms      32
<h1> I follow them… </h1>



Compiled                                                     <ul>
                                                                     <li>Harish [@hsivaram]</li>
                                                                     <li>Amit [@amit_pande}}]</li>




HTML
                                                                     <li>Snook [@snookca]</li>
                                                                     <li>Mrinal [@mrinal]</li>
                                                                     <li>Sudar [@sudarmuthu]</li>

                                                             </ul>

                                                             <h2> #metarefresh </h2>




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms            33
Rendered
                                                         I follow them…
                                                                 •     Harish [@hsivaram]
                                                                 •     Amit [@amit_pande}}]



Output
                                                                 •     Snook [@snookca]
                                                                 •     Mrinal [@mrinal]
                                                                 •     Sudar [@sudarmuthu]

                                                         #metarefresh




April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms     34
Wait! There’s
more… Lot
more!
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   35
mustache.github.com

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   36
handlebarsjs.com

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   37
{dust}
                 akdubya.github.com/dustjs

April 23, 2012     twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   38
underscore.js, Jade, haml-js, jQote2, doT, Stencil, Parrot, Eco, EJS, jQuery templates, node-
asyncEJS, mustache, dust.js, handlebars, Google Closure Templates, Nun, Mu, kite., jazz, jshtml,
jm, jsdom, Liquor, Coffeekup, CoffeeMug, bliss, DryKup, plates, shift, whiskers, node-dom,
stencil, node-jst, tpl, TwigJs, Templ8, PURE, JinJs (and more….)




Many out
there!
April 23, 2012             twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   39
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 40
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 41
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 42
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 43
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 44
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 45
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 46
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 47
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 48
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 49
Source: http://engineering.linkedin.com/frontend/client‐side‐templating‐throwdown‐mustache‐handlebars‐dustjs‐and‐more

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms                                                                 50
{dust}
       http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more




April 23, 2012                     twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms            51
April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   52
Questions?

April 23, 2012   twitter: udayms | linkedin: udayms | facebook: udayms | about.me: udayms   53

Contenu connexe

Plus de Uday Shankar

Crafting delightful experiences
Crafting delightful experiencesCrafting delightful experiences
Crafting delightful experiencesUday Shankar
 
Design - What differentiates the useful from usable & delightful
Design - What differentiates the useful from usable & delightfulDesign - What differentiates the useful from usable & delightful
Design - What differentiates the useful from usable & delightfulUday Shankar
 
The Good, Bad & Ugly of UI Design
The Good, Bad & Ugly of UI DesignThe Good, Bad & Ugly of UI Design
The Good, Bad & Ugly of UI DesignUday Shankar
 
What Drives The World
What Drives The WorldWhat Drives The World
What Drives The WorldUday Shankar
 
Demystifying User Experience
Demystifying User ExperienceDemystifying User Experience
Demystifying User ExperienceUday Shankar
 
Touch & Multi Touch - A UX Perspective
Touch & Multi Touch - A UX PerspectiveTouch & Multi Touch - A UX Perspective
Touch & Multi Touch - A UX PerspectiveUday Shankar
 
Mobile Applications, Emerging Markets & Tourism
Mobile Applications, Emerging Markets & TourismMobile Applications, Emerging Markets & Tourism
Mobile Applications, Emerging Markets & TourismUday Shankar
 
Prototyping SMS/Voice Services
Prototyping SMS/Voice ServicesPrototyping SMS/Voice Services
Prototyping SMS/Voice ServicesUday Shankar
 
UI Engineering - Rebooted
UI Engineering - RebootedUI Engineering - Rebooted
UI Engineering - RebootedUday Shankar
 
Science of prototyping
Science of prototypingScience of prototyping
Science of prototypingUday Shankar
 
Usability & Prototyping
Usability & PrototypingUsability & Prototyping
Usability & PrototypingUday Shankar
 
User Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great uiUser Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great uiUday Shankar
 
Effective UI Development using Adobe Flex
Effective UI Development using Adobe FlexEffective UI Development using Adobe Flex
Effective UI Development using Adobe FlexUday Shankar
 

Plus de Uday Shankar (17)

Crafting delightful experiences
Crafting delightful experiencesCrafting delightful experiences
Crafting delightful experiences
 
Design - What differentiates the useful from usable & delightful
Design - What differentiates the useful from usable & delightfulDesign - What differentiates the useful from usable & delightful
Design - What differentiates the useful from usable & delightful
 
The Good, Bad & Ugly of UI Design
The Good, Bad & Ugly of UI DesignThe Good, Bad & Ugly of UI Design
The Good, Bad & Ugly of UI Design
 
Prototyping
PrototypingPrototyping
Prototyping
 
What Drives The World
What Drives The WorldWhat Drives The World
What Drives The World
 
Demystifying User Experience
Demystifying User ExperienceDemystifying User Experience
Demystifying User Experience
 
Touch & Multi Touch - A UX Perspective
Touch & Multi Touch - A UX PerspectiveTouch & Multi Touch - A UX Perspective
Touch & Multi Touch - A UX Perspective
 
Mobile Applications, Emerging Markets & Tourism
Mobile Applications, Emerging Markets & TourismMobile Applications, Emerging Markets & Tourism
Mobile Applications, Emerging Markets & Tourism
 
Khuljaa Sim Sim
Khuljaa Sim SimKhuljaa Sim Sim
Khuljaa Sim Sim
 
Prototyping SMS/Voice Services
Prototyping SMS/Voice ServicesPrototyping SMS/Voice Services
Prototyping SMS/Voice Services
 
UI Engineering - Rebooted
UI Engineering - RebootedUI Engineering - Rebooted
UI Engineering - Rebooted
 
Science of prototyping
Science of prototypingScience of prototyping
Science of prototyping
 
Usability & Prototyping
Usability & PrototypingUsability & Prototyping
Usability & Prototyping
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid Prototyping
 
User Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great uiUser Experioence - delivering great ux through great ui
User Experioence - delivering great ux through great ui
 
Effective UI Development using Adobe Flex
Effective UI Development using Adobe FlexEffective UI Development using Adobe Flex
Effective UI Development using Adobe Flex
 
Adobe® Flex™
Adobe® Flex™Adobe® Flex™
Adobe® Flex™
 

Dernier

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Dernier (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

Ninja Prototyping with Templating Frameworks