SlideShare a Scribd company logo
1 of 16
Download to read offline
mustache.js入門
@ina_ani
2013/11/16 AiSA
対象
デザイナー
JavaScriptをバリバリ書けないデザイナー
上記デザイナーに仕事を引き継ぎたい人
エンジニア
JSテンプレートエンジンを知らない人
テンプレート(エンジン)
≒ひな形
Wordにもありましたね
自動でかけると嬉しいんじゃね?
→ プログラム

お世話になっております。
株式会社
の

以上
よろしくお願いします。

です。
テンプレートエンジンの例(PHP)
PHPがまさにそれ

<html>
<head>
<title>
</title>
</head>
<body>
<h1>ようこそ
さん
</h1>
</body>
</html>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>ようこそ<?php echo $name; ?>さん</h1>
</body>
</html>
いろんな書き方があります
ejs, erb
<%= name %>
haml,jade
(そもそもタグも独自記法)
Smarty
{$name}
mustacheについて
Logic-less templates
単純なテンプレート
多数の言語でサポート
Ruby, JavaScript, Python,Erlang,PHP,Perl,
Objective-C,Java, …..
記法も単純
{{name}}
JavaScript vs PHP
どっちがいいの?
昔のやり方

ページください
ブラウザ

サーバ
はいよっ
ページください

最近のやり方

はいよっ
ブラウザ

データください
はいよっ
ページの一部を
JavaScriptでつくる

サーバ
mustache.jsについて
mustacheを理解するJavaScriptで書かれたテンプ
レートエンジン
jQueryとの比較
サーバから
obj = {name: ‘ina_ani’};
が返却されたとしてそれをすでにあるdivのなかに
spanで囲んで表示しよう
$.(‘.name’).append($(‘<span>’).text(obj.name))
タグや、レイアウトの情報がJavaScriptに!!
→ これでは分業が辛い
mustache.js( + jQuery)の場合
<h1><span id=”name”>{{name}}</span></h1>

var template = $(‘#name’).html();
$(‘#name’).html(
Mustache.render(template, obj)
);
分業の範囲
JS

HTML

PHP

諸悪の根源
デザイナー
エンジニア

HTML + テンプレート

JS

スーパーデザイナー
HTML + テンプレート
デザイナー

PHP
バックエンドエンジニア

JS

PHP
エンジニア
さっそくつかってみる
RSSを画面にいい感じに表示してみよう
そーすこーど!
<script type="text/javascript" src="http://ajax.
googleapis.com/ajax/libs/jquery/1.10.2/jquery.
min.js"></script>
<script src="mustache.js"></script>
$(function(){
$.ajax({
type: 'GET',
url: 'https://query.yahooapis.com/v1/public/yql?callback=?',
data: {
q:"select * from rss where url='http://feeds.feedburner.
com/hatena/b/hotentry'",
format:'json', doagnostics:"true"
}, dataType:'jsonp',
success:function(obj){
console.log(obj); // debug
var template = $('#item-template').html();
var l = obj.query.results;
var s = Mustache.render(template,l);
$('#contents').html(s);
}
});
});
<h1>mustache.js + YQL</h1>
<script id="item-template" type="text/tmpl">
{{#item}}
<div>
<h2><a href="{{link}}" target="_blank">
{{title}}</a></h2>
<p>{{description}}</p>
</div>
{{/item}}
</script>
<div id="contents"></div>
面倒なことは回避する手段がある
便利なものはつかっていきましょー

More Related Content

Viewers also liked

Thymeleafでハマったこと
ThymeleafでハマったことThymeleafでハマったこと
Thymeleafでハマったことeiryu
 
Thymeleafのすすめ
ThymeleafのすすめThymeleafのすすめ
Thymeleafのすすめeiryu
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作祐磨 堀
 
HTTP/2の現状とこれから
HTTP/2の現状とこれからHTTP/2の現状とこれから
HTTP/2の現状とこれからshigeki_ohtsu
 
HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方kwatch
 
UXはじめの一歩
UXはじめの一歩UXはじめの一歩
UXはじめの一歩井上 誠
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP betterKazuho Oku
 

Viewers also liked (8)

Thymeleafでハマったこと
ThymeleafでハマったことThymeleafでハマったこと
Thymeleafでハマったこと
 
Thymeleafのすすめ
ThymeleafのすすめThymeleafのすすめ
Thymeleafのすすめ
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作
 
HTTP/2の現状とこれから
HTTP/2の現状とこれからHTTP/2の現状とこれから
HTTP/2の現状とこれから
 
HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方
 
UXはじめの一歩
UXはじめの一歩UXはじめの一歩
UXはじめの一歩
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP better
 

Similar to Mustache入門

PHP初心者セッション2013
PHP初心者セッション2013PHP初心者セッション2013
PHP初心者セッション2013Hideo Kashioka
 
090801 ライトニングトーク
090801 ライトニングトーク090801 ライトニングトーク
090801 ライトニングトーク雄一郎 安倍
 
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズCSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズrie05
 
テーマ作成のアプローチ
テーマ作成のアプローチテーマ作成のアプローチ
テーマ作成のアプローチSeto Takahiro
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolistShinichiro Kumeuchi
 
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考えるテーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考えるTsuyoshi.
 
WordPress テーマ作成&PHP超入門
WordPress テーマ作成&PHP超入門WordPress テーマ作成&PHP超入門
WordPress テーマ作成&PHP超入門Michinari Odajima
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerHideo Kashioka
 
141115 making web site
141115 making web site141115 making web site
141115 making web siteHimi Sato
 
Php初心者セッション2014ppt
Php初心者セッション2014pptPhp初心者セッション2014ppt
Php初心者セッション2014pptHideo Kashioka
 
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点Horiguchi Seito
 
WordPress のための PHP 超入門
WordPress のための PHP 超入門WordPress のための PHP 超入門
WordPress のための PHP 超入門Michinari Odajima
 
XOOPS and Twitter Bootstrap
XOOPS and Twitter BootstrapXOOPS and Twitter Bootstrap
XOOPS and Twitter BootstrapYoshi Sakai
 
まだやれる Css preprocesser
まだやれる Css preprocesserまだやれる Css preprocesser
まだやれる Css preprocesserShinya Sugo
 
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoyatamotsu toyoda
 
Texteditor - Ohotech 並盛 #5
Texteditor - Ohotech 並盛 #5Texteditor - Ohotech 並盛 #5
Texteditor - Ohotech 並盛 #5NISHIHARA Shota
 
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ーWeb デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ーKite Koga
 

Similar to Mustache入門 (20)

Haxe で始める CreateJS
Haxe で始める CreateJSHaxe で始める CreateJS
Haxe で始める CreateJS
 
PHP初心者セッション2013
PHP初心者セッション2013PHP初心者セッション2013
PHP初心者セッション2013
 
090801 ライトニングトーク
090801 ライトニングトーク090801 ライトニングトーク
090801 ライトニングトーク
 
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズCSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
CSS Nite in OSAKA, Vol.32:デザイナーのためのWordPressカスタマイズ
 
テーマ作成のアプローチ
テーマ作成のアプローチテーマ作成のアプローチ
テーマ作成のアプローチ
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolist
 
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考えるテーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
テーマ制作時の疑問とノンプログラマーにも優しいテーマを考える
 
2009 PHP初心者
2009 PHP初心者2009 PHP初心者
2009 PHP初心者
 
WordPress テーマ作成&PHP超入門
WordPress テーマ作成&PHP超入門WordPress テーマ作成&PHP超入門
WordPress テーマ作成&PHP超入門
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
 
141115 making web site
141115 making web site141115 making web site
141115 making web site
 
Php初心者セッション2014ppt
Php初心者セッション2014pptPhp初心者セッション2014ppt
Php初心者セッション2014ppt
 
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
最近、実務に導入してみたフロントエンドの技術8つの良かった点と反省点
 
WordPress のための PHP 超入門
WordPress のための PHP 超入門WordPress のための PHP 超入門
WordPress のための PHP 超入門
 
XOOPS and Twitter Bootstrap
XOOPS and Twitter BootstrapXOOPS and Twitter Bootstrap
XOOPS and Twitter Bootstrap
 
まだやれる Css preprocesser
まだやれる Css preprocesserまだやれる Css preprocesser
まだやれる Css preprocesser
 
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
 
Texteditor - Ohotech 並盛 #5
Texteditor - Ohotech 並盛 #5Texteditor - Ohotech 並盛 #5
Texteditor - Ohotech 並盛 #5
 
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ーWeb デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
 
WordPress と Bootstrap
WordPress と BootstrapWordPress と Bootstrap
WordPress と Bootstrap
 

More from ina job

KubeWeekly読書メモの紹介
KubeWeekly読書メモの紹介KubeWeekly読書メモの紹介
KubeWeekly読書メモの紹介ina job
 
僕の 技術の無駄遣いを 紹介します
僕の 技術の無駄遣いを 紹介します僕の 技術の無駄遣いを 紹介します
僕の 技術の無駄遣いを 紹介しますina job
 
シェル入門
シェル入門シェル入門
シェル入門ina job
 
Voice remix!
Voice remix!Voice remix!
Voice remix!ina job
 
MTM07で電子楽器を展示してきた
MTM07で電子楽器を展示してきたMTM07で電子楽器を展示してきた
MTM07で電子楽器を展示してきたina job
 
Erlangやってみた
ErlangやってみたErlangやってみた
Erlangやってみたina job
 
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理ina job
 
OooBasic
OooBasicOooBasic
OooBasicina job
 
ICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかina job
 
context free art
context free artcontext free art
context free artina job
 
WxHaskell
WxHaskellWxHaskell
WxHaskellina job
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術ina job
 

More from ina job (12)

KubeWeekly読書メモの紹介
KubeWeekly読書メモの紹介KubeWeekly読書メモの紹介
KubeWeekly読書メモの紹介
 
僕の 技術の無駄遣いを 紹介します
僕の 技術の無駄遣いを 紹介します僕の 技術の無駄遣いを 紹介します
僕の 技術の無駄遣いを 紹介します
 
シェル入門
シェル入門シェル入門
シェル入門
 
Voice remix!
Voice remix!Voice remix!
Voice remix!
 
MTM07で電子楽器を展示してきた
MTM07で電子楽器を展示してきたMTM07で電子楽器を展示してきた
MTM07で電子楽器を展示してきた
 
Erlangやってみた
ErlangやってみたErlangやってみた
Erlangやってみた
 
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理
 
OooBasic
OooBasicOooBasic
OooBasic
 
ICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったかICFP2009-いかにして我々は戦ったか
ICFP2009-いかにして我々は戦ったか
 
context free art
context free artcontext free art
context free art
 
WxHaskell
WxHaskellWxHaskell
WxHaskell
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術
 

Mustache入門