Top Banner
{ Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data
32

{ Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Dec 17, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

{Beyond String Concatenation

Using jQuery Templating to Cleanly Display Your Data

Page 2: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Rey Bango

• jQuery Team Member

• Microsoft Client-Web Community PM  

• Editor of ScriptJunkie.com

• Ajaxian.com Writer

• Co-host of the jQuery Podcast

• Co-host of JSConf Live Podcast

Page 3: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Web Templates

Page 4: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Not a New Invention

• Server-side for years

• ASP.NET

• Smarty & Savant (PHP)

• Cheetah & Mako (Python)

Page 5: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Awesome-Sauce

• Separates content and program code

• Flexible architecture

• Shortens development time

• Readability

• Great for teams

Page 6: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<form action=“clientUpdate.php” method=“post” name=“clUpd”>

Page 7: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.
Page 8: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Damnit DOM!

• DOM Manipulation x1000

• HTML Concatenation Soup

• Readability Hell

• Maintenance – Needles in eyes

Page 9: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

var clRec = "";

for(var i=0; i<clientData.name.length; i++) { clRec += "<li><a href='clients/"+clientData.id[i]+"'>" + clientData.name[i] + "</a></li>";}

$("ul").append(clRec);

HTML Soup

Page 10: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<script id=“clientTemplate” type=“text/html”><li><a href=‘clients/${id}’>$

{name}</a></li></script>

$(“#clientTemplate”).tmpl(clientData).appendTo( “ul” );

No Soup for You!

Page 11: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Clarity

• Affect the UI via pre-built templates

• Nice well-defined structure

• Less convoluted and hard to understand code

• Greater maintainability

Page 12: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Templates Good

• Separates UI from data

• JavaScript and HTML-based. Easy!

• JavaScript templates are rendered and cached client-side

• Promotes reusability of existing templates

• Designers & developers can coexist <3

Page 13: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Aren’t server-side templates good

enough?

Page 14: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

JS Engines

• JavaScript Micro-Templating

• jTemplates• PURE• mustache.js• jQuery Smarty• jQuote

Page 15: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

jQuery Templating

• 1st contribution from Microsoft

• MIT/GPL – Just like jQuery• Official Plugin supported

by the jQuery Project

Page 16: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Data

Template

Templating Engine

DOM

Page 17: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

var tmpl = "<li>${ dataItem }</li>";

A Template

Page 18: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<script id=“myTemplate" type="text/html">

<li>${ dataItem }</li></script>

A Template

Page 19: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<script id="productsTemplate" type="text/html"> <div> <img src="Content/ProductImages/${Picture}" class="productImage" /> <span class="productName">${Name}</span> Price: ${formatPrice(Price)} <img data-pk="${Id}" src="Content/AddCart.png" alt="Add to Cart" class="addCart" /> </div></script>

A Template

Page 20: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

.tmpl()

$("#myTemplate").tmpl( dataObject ).appendTo("ul");

<script id=“myTemplate" type="text/html"> <li>${ dataItem }</li></script>

<ul></ul>

Page 21: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Code

Page 22: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Main Methods

• tmpl()• tmplItem()• template()

- Render the template- Find the template item- Compile/Store a template

Page 23: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Supported Tags

• ${...}• {{each

...}}...{{/each}}• {{if ...}}...

{{else ...}}...{{/if}}• {{html ...}} • {{tmpl ...}}• {{wrap

...}}...{{/wrap}}

- Evaluate fields or expression- Loop over template items- Conditional sections- Insert markup from data - Composition, as template items- Composition, plus incorporation of wrapped HTML

Page 24: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<script id=“myTemplate" type="text/html">

<li>${parseInt(ReleaseYear) + 100}</li> </script>

Inline Expressions

Page 25: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<script id=“myTemplate" type="text/html"><li><a href="clients/${id}">${name}

{{if (age > 30)}} is Old!{{/if}}</a></li></script>

Code Blocks

Page 26: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

<script id="clientTemplate" type="text/html"> <p><a href="clients/${id}">${name}

{{if (age > 30)}} is Old!{{/if}}</a></p> {{tmpl($data) "#ageTemplate"}}</script>

<script id="ageTemplate" type="text/html">

<p>Current Age: ${age}</p></script>

Nesting

Page 27: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

function addAge() { return this.data.age + 12;}

….

<script id="ageTemplate" type="text/html"><p>Current Age: ${addAge}</p>

</script>

Custom Functions

Page 28: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

var clientData = [{ name: "Rey Bango", age: 32, id: 1, phone: [ "954-600-1234", "954-355-5555" ] },…];

….

<ul>{{each

phone}}<li>${$value}</li>{{/each}}</ul>

Looping

Page 29: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Code

Page 30: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

https://github.com/jquery/jquery-tmpl

Make it Better!

Page 31: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

http://speakerrate.com/reybango

Rate Me!

Page 32: { Beyond String Concatenation Using jQuery Templating to Cleanly Display Your Data.

Rey Bango

@[email protected]

[email protected]://blog.reybango.com