Только на этой неделе команда jQuery объявила, что шаблонный плагин Microsoft (наряду с парой других) теперь официально поддерживается. Это означает, что плагин теперь будет обслуживаться и обновляться непосредственно основной командой. В этом видеоуроке мы рассмотрим основы плагина и почему он так хорош .
В качестве быстрого примера мы снова обратимся к примеру API поиска в Твиттере от пятницы ( вспомним Бибера ). Единственное отличие состоит в том, что на этот раз мы будем использовать шаблон HTML для прикрепления возвращаемых данных, а не путать наш JavaScript!
Несколько месяцев назад Эндрю Берджесс представил вам этот плагин , все еще в бета-версии. Однако сегодня мы интегрируем плагин в реальный код.
Ускоренный курс
Шаг 1 : Импортируйте jQuery и плагин шаблонов
1
2
|
<script src=»http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js»></script>
<script src=»jquery.tmpl.js»></script>
|
Шаг 2 : Создайте свой шаблон
01
02
03
04
05
06
07
08
09
10
|
<script id=»tweets» type=»text/x-jquery-tmpl»>
<li>
<img src=»${imgSource}» alt=»${username}» />
<h2> ${username} </h2>
<p> ${tweet} </p>
{{if geo}}
<span> ${geo}
{{/if}}
</li>
</script>
|
- Обратите внимание, как этот шаблон заключен в теги
script
и что был примененtype
text/x-jquery-tmpl
. - Мы ссылаемся на имена переменных шаблона, добавляя знак доллара и заключая имя свойства в фигурные скобки.
-
If
операторы могут быть созданы с использованием двух наборов фигурных скобок, как показано выше. (Смотрите скринкаст для более подробной информации.)
Шаг 3 : Найдите данные для рендеринга!
В этом случае мы сделаем быстрый поиск по API поиска в Twitter.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
<script>
$.ajax({
type : ‘GET’,
dataType : ‘jsonp’,
url : ‘http://search.twitter.com/search.json?q=nettuts’,
success : function(tweets) {
var twitter = $.map(tweets.results, function(obj, index) {
return {
username : obj.from_user,
tweet : obj.text,
imgSource : obj.profile_image_url,
geo : obj.geo
};
});
}
});
</script>
|
Спасибо Peter Galiba (см. Комментарии), за то, что порекомендовали более элегантное решение $.map
, показанное выше.
Обратитесь к скринкасту для полного ознакомления с кодом выше. Но самое главное, что мы создаем массив объектов. Затем они будут служить данными для шаблона, который мы создали на втором шаге. Обратите внимание, как имена свойств:
1
2
3
4
|
username : obj.from_user,
tweet : obj.text,
imgSource : obj.profile_image_url,
geo : obj.geo
|
… соответствуют шаблонным переменным, которые мы создали на втором шаге.
Шаг 4 : Где должна быть сделана разметка?
Далее мы должны указать, где должна быть представлена разметка и данные. Для этого мы создадим неупорядоченный список.
1
|
<ul id=»tweets»> </ul>
|
Шаг 5 : визуализация данных
Наконец, мы присоединяем данные к шаблону и добавляем их в неупорядоченный список (#tweets), который мы создали на четвертом шаге.
1
|
$(‘#tweets’).tmpl(twitter).appendTo(‘#twitter’);
|
- Найдите элемент
script
(шаблона) сid
твитов . - Прикрепите массив
twitter
к этому шаблону. - Добавьте новую разметку в DOM.
Окончательный источник
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<!DOCTYPE HTML>
<html lang=»en»>
<head>
<meta charset=»UTF-8″>
<title></title>
<link rel=»stylesheet» href=»style.css» />
<script src=»http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js»></script>
<script src=»jquery.tmpl.js»></script>
</head>
<body>
<h1> Tweets about Nettuts+ </h1>
<script id=»tweets» type=»text/x-jquery-tmpl»>
<li>
<img src=»${imgSource}» alt=»${userName}» />
<h2> ${username} </h2>
<p> ${tweet} </p>
{{if geo}}
<span>
${geo}
{{/if}}
</li>
</script>
<ul id=»twitter»></ul>
<script>
$.ajax({
type : ‘GET’,
dataType : ‘jsonp’,
url : ‘http://search.twitter.com/search.json?q=nettuts’,
success : function(tweets) {
var twitter = $.map(tweets.results, function(obj, index) {
return {
username : obj.from_user,
tweet : obj.text,
imgSource : obj.profile_image_url,
geo : obj.geo
};
});
$(‘#tweets’).tmpl(twitter).appendTo(‘#twitter’);
}
});
</script>
</body>
</html>
|
Так что ты думаешь?
Теперь, когда шаблонный плагин официально поддерживается основной командой jQuery, будете ли вы использовать его в своих будущих проектах?