Submit Search
Upload
JavaScriptテンプレートエンジンで活かすData API
•
Download as PPTX, PDF
•
7 likes
•
4,680 views
Hajime Fujimoto
Follow
2014年11月29日のMTDDC Meetup TOKYO 2014でお話しした「JavaScriptテンプレートエンジンで活かすData API」の資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 40
Download now
Recommended
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
Takeuchi Yuichi
Movable Type as a Playground
Movable Type as a Playground
Taku AMANO
Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法
Hajime Fujimoto
Data APIの基本
Data APIの基本
Hajime Fujimoto
Data api workshop at Co-Edo
Data api workshop at Co-Edo
Yuji Takayama
20160720 okubo mt_cloud_handson
20160720 okubo mt_cloud_handson
Six Apart
Webteko 20090925
Webteko 20090925
だいすけ ふるかわ
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
Takashi Uemura
Recommended
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
Takeuchi Yuichi
Movable Type as a Playground
Movable Type as a Playground
Taku AMANO
Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法
Hajime Fujimoto
Data APIの基本
Data APIの基本
Hajime Fujimoto
Data api workshop at Co-Edo
Data api workshop at Co-Edo
Yuji Takayama
20160720 okubo mt_cloud_handson
20160720 okubo mt_cloud_handson
Six Apart
Webteko 20090925
Webteko 20090925
だいすけ ふるかわ
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
Takashi Uemura
20160610 mtsaga handson_public
20160610 mtsaga handson_public
Six Apart
詳説 Movable type 7
詳説 Movable type 7
Yuji Takayama
20130225 pronet study
20130225 pronet study
Six Apart
Word Press on Movable Type
Word Press on Movable Type
Hajime Fujimoto
20141101 handson
20141101 handson
Six Apart
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
Takayuki Shimizukawa
20140228 Movable Type Seminar
20140228 Movable Type Seminar
Six Apart
Movable Type 7 のすべて
Movable Type 7 のすべて
Yuji Takayama
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
hideaki honda
20180709 pronet study
20180709 pronet study
Six Apart
Wb tokyo 2013
Wb tokyo 2013
Hidekazu Ishikawa
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
ninomy
僕がやったXaml戦略
僕がやったXaml戦略
Hiroyuki Mori
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
Takuma Nishiyama
Web development fundamental_v2
Web development fundamental_v2
Takuya Kumagai
データバインディング徹底攻略
データバインディング徹底攻略
Hiroyuki Mori
Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」
Hideki Akiba
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Yikei Lu
Data APIの背景と活用方法
Data APIの背景と活用方法
Hajime Fujimoto
20130626 movable type seminar
20130626 movable type seminar
Six Apart
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
Hajime Fujimoto
More Related Content
What's hot
20160610 mtsaga handson_public
20160610 mtsaga handson_public
Six Apart
詳説 Movable type 7
詳説 Movable type 7
Yuji Takayama
20130225 pronet study
20130225 pronet study
Six Apart
Word Press on Movable Type
Word Press on Movable Type
Hajime Fujimoto
20141101 handson
20141101 handson
Six Apart
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
Takayuki Shimizukawa
20140228 Movable Type Seminar
20140228 Movable Type Seminar
Six Apart
Movable Type 7 のすべて
Movable Type 7 のすべて
Yuji Takayama
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
hideaki honda
20180709 pronet study
20180709 pronet study
Six Apart
Wb tokyo 2013
Wb tokyo 2013
Hidekazu Ishikawa
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
ninomy
僕がやったXaml戦略
僕がやったXaml戦略
Hiroyuki Mori
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
Takuma Nishiyama
Web development fundamental_v2
Web development fundamental_v2
Takuya Kumagai
データバインディング徹底攻略
データバインディング徹底攻略
Hiroyuki Mori
Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」
Hideki Akiba
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Yikei Lu
Data APIの背景と活用方法
Data APIの背景と活用方法
Hajime Fujimoto
20130626 movable type seminar
20130626 movable type seminar
Six Apart
What's hot
(20)
20160610 mtsaga handson_public
20160610 mtsaga handson_public
詳説 Movable type 7
詳説 Movable type 7
20130225 pronet study
20130225 pronet study
Word Press on Movable Type
Word Press on Movable Type
20141101 handson
20141101 handson
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
20140228 Movable Type Seminar
20140228 Movable Type Seminar
Movable Type 7 のすべて
Movable Type 7 のすべて
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
20180709 pronet study
20180709 pronet study
Wb tokyo 2013
Wb tokyo 2013
MediaWiki Tips for saveMLAK - wikibana
MediaWiki Tips for saveMLAK - wikibana
僕がやったXaml戦略
僕がやったXaml戦略
WordPressで作るポートフォリオサイト
WordPressで作るポートフォリオサイト
Web development fundamental_v2
Web development fundamental_v2
データバインディング徹底攻略
データバインディング徹底攻略
Firefox OSアプリ 「ModeView」
Firefox OSアプリ 「ModeView」
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Data APIの背景と活用方法
Data APIの背景と活用方法
20130626 movable type seminar
20130626 movable type seminar
Similar to JavaScriptテンプレートエンジンで活かすData API
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
Hajime Fujimoto
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
AngularJS入門
AngularJS入門
Kenji Shirane
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
インフラジスティックス・ジャパン株式会社
Data API 2.0
Data API 2.0
Yuji Takayama
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発
西 雄樹
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
インフラジスティックス・ジャパン株式会社
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
Tomohiro Ichimura
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
Hideki Hashizume
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
Ryuma Tsukano
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
Tetsuji Hayashi
TECHTALK 20200715 分析データをセルフサービスで準備ーデータマネージャーでもっとできる
TECHTALK 20200715 分析データをセルフサービスで準備ーデータマネージャーでもっとできる
QlikPresalesJapan
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
Fumiya Sakai
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
Kenji Shirane
はじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
Similar to JavaScriptテンプレートエンジンで活かすData API
(20)
scala+liftで遊ぼう
scala+liftで遊ぼう
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
AngularJS入門
AngularJS入門
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Data API 2.0
Data API 2.0
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
お客様が望んでいるモダンデスクトップアプリとは?/傾向と対策 Part1
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
TECHTALK 20200715 分析データをセルフサービスで準備ーデータマネージャーでもっとできる
TECHTALK 20200715 分析データをセルフサービスで準備ーデータマネージャーでもっとできる
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
はじめよう Backbone.js
はじめよう Backbone.js
More from Hajime Fujimoto
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Hajime Fujimoto
コンテンツタイプの活用と拡張
コンテンツタイプの活用と拡張
Hajime Fujimoto
PowerCMSとIoTの連携
PowerCMSとIoTの連携
Hajime Fujimoto
Connect with Data API
Connect with Data API
Hajime Fujimoto
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Hajime Fujimoto
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
Hajime Fujimoto
Movable Typeの権限と承認フロー
Movable Typeの権限と承認フロー
Hajime Fujimoto
2つの「Layout」プラグインでMovable Typeをパワーアップ
2つの「Layout」プラグインでMovable Typeをパワーアップ
Hajime Fujimoto
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
Hajime Fujimoto
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Hajime Fujimoto
Movable Type 6.0をできるだけ安く使う方法
Movable Type 6.0をできるだけ安く使う方法
Hajime Fujimoto
WordPress on Movable Type
WordPress on Movable Type
Hajime Fujimoto
WordPress on Movable Type
WordPress on Movable Type
Hajime Fujimoto
Vagrantのすすめ
Vagrantのすすめ
Hajime Fujimoto
WordPress on Movable Type
WordPress on Movable Type
Hajime Fujimoto
WordPress on movable type(WordCamp Kobe 2013)
WordPress on movable type(WordCamp Kobe 2013)
Hajime Fujimoto
Wordpress on Movable Type~WPConnectorプラグインのご紹介~
Wordpress on Movable Type~WPConnectorプラグインのご紹介~
Hajime Fujimoto
デザイナーにもできる再構築の高速化/負荷分散
デザイナーにもできる再構築の高速化/負荷分散
Hajime Fujimoto
Amazonec2ではじめるMovable Type
Amazonec2ではじめるMovable Type
Hajime Fujimoto
MTCafe Gunma 2013へのお誘い
MTCafe Gunma 2013へのお誘い
Hajime Fujimoto
More from Hajime Fujimoto
(20)
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
コンテンツタイプの活用と拡張
コンテンツタイプの活用と拡張
PowerCMSとIoTの連携
PowerCMSとIoTの連携
Connect with Data API
Connect with Data API
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
Movable Typeの権限と承認フロー
Movable Typeの権限と承認フロー
2つの「Layout」プラグインでMovable Typeをパワーアップ
2つの「Layout」プラグインでMovable Typeをパワーアップ
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Movable Type 6.0をできるだけ安く使う方法
Movable Type 6.0をできるだけ安く使う方法
WordPress on Movable Type
WordPress on Movable Type
WordPress on Movable Type
WordPress on Movable Type
Vagrantのすすめ
Vagrantのすすめ
WordPress on Movable Type
WordPress on Movable Type
WordPress on movable type(WordCamp Kobe 2013)
WordPress on movable type(WordCamp Kobe 2013)
Wordpress on Movable Type~WPConnectorプラグインのご紹介~
Wordpress on Movable Type~WPConnectorプラグインのご紹介~
デザイナーにもできる再構築の高速化/負荷分散
デザイナーにもできる再構築の高速化/負荷分散
Amazonec2ではじめるMovable Type
Amazonec2ではじめるMovable Type
MTCafe Gunma 2013へのお誘い
MTCafe Gunma 2013へのお誘い
Recently uploaded
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Recently uploaded
(9)
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
JavaScriptテンプレートエンジンで活かすData API
1.
JavaScript テンプレートエンジンで 活かすData
API 2014/11/29 MTDDC Meetup TOKYO 2014 藤本壱 1
2.
アジェンダ • 自己紹介
• JavaScriptテンプレートエンジンでData APIを活かす • Handlebarsでの例 • Angular.jsでの例 • まとめ 2
3.
自己紹介 3
4.
自己紹介その1 • 藤本壱(ふじもとはじめ)
• 兵庫県伊丹市出身 • 群馬県前橋市在住 埼玉 東京 山梨 神奈川 栃木 茨城 千葉 4
5.
自己紹介その2 • 本職はPC系のフリーライター
• 2004年秋からMovable Typeユーザー • さまざまなプラグインを開発 5
6.
自己紹介その3 • ブログはもちろんMovable
Type 6 http://www.h-fj.com/blog/
7.
テンプレートエンジンでData APIを活かす 7
8.
Data APIを 使ったことがありますか?
8
9.
Data APIの概要 •
管理画面を使わずにMovable Typeのデータを操作する仕組み • アクセスするアドレスとメソッドに応じて操作(REST) • データの取得/作成/更新/削除が可能 • データはJSON形式で受け渡し • 各種のプログラム言語でアクセス可能 • JavaScriptライブラリあり 9
10.
Data APIにアクセスする例 •
IDが1番のウェブサイトから記事を読み込む http://your-host/path-to-mt/mt-data-api.cgi/v1/sites/1/entries 10
11.
Data APIでできること •
Web製作では… • ページ分割 • 検索 • 独自の管理画面 • Etc. • Web製作以外では… • スマートフォン/タブレット用アプリのバックエンド • Etc. 11
12.
Data APIの難点 •
プログラミングが必要 • デザイナー(ノンプログラマー)の方には難しい • 開発すべてをプログラマーに任せると… • デザインが… • HTMLを修正するたびにプログラマーに依頼… 12
13.
テンプレートエンジンでデザインとロジックを分離 • テンプレートエンジン=テンプレートを解釈してHTML等に変換
して出力する仕組み • ロジック(プログラム)とデザインを分離 • プログラマーとデザイナーの分業 13
14.
JavaScriptテンプレートエンジンを活用 • JavaScriptならData
APIのプログラミングをしやすい • JavaScriptのテンプレートエンジンと組み合わせることも可能 • MTMLとまったく同じではないものの、MTMLに近い形でテンプ レートを記述できるように工夫 14
15.
HandleBarsでの例 15
16.
HandleBarsの概要 • http://handlebarsjs.com/
• 比較的シンプルなテンプレートエンジン • ロジックレス(テンプレートにプログラムを書かない) • mustacheの上位互換 • JavaScriptのオブジェクトをテンプレートに当てはめて出力 • 機能拡張も可能(ヘルパー) 16
17.
HandleBarsの基本 17 テンプレートJavaScript
<script id="tmpl" type="text/x-handlebars- template"> <ul> {{#names}} <li>Hello, {{name}}</li> {{/names}} </ul> </script> <div id="output"></div> var src = $('#tmpl').html(); var tmpl = Handlebars.compile(src); var names = [ { name: 'Taro' }, { name: 'Jiro' }, { name: 'Saburo' } ]; var output = tmpl({ names: names }); $('#output').html(output);
18.
HandleBarsの基本 18 テンプレート結果
<script id="tmpl" type="text/x-handlebars- template"> <ul> {{#names}} <li>Hello, {{name}}</li> {{/names}} </ul> </script> <div id="output"></div> <div id="output"> <ul> <li>Hello, Taro</li> <li>Hello, Jiro</li> <li>Hello, Saburo</li> </ul> </div>
19.
HandlerBars+Data APIの例:ページ分割 •
Data APIで各ページの記事のデータを取得 • できるだけMovbale Typeのテンプレートに近い感じになるよう にデータを一部加工 • テンプレートにデータを当てはめて出力 19
20.
記事一覧出力部分 20 <ul>
{{#mt:Entries}} <li> <h2> <a href="{{mt:EntryPermalink}}">{{mt:EntryTitle}}</a> </h2> <p>{{mt:EntryExcerpt}}</p> </li> {{/mt:Entries}} </ul>
21.
ページ移動リンク出力部分 21 <ul
class="pager"> {{#mt:PagerBlock}} <li> {{#mt:IfCurrentPage}} {{mt:CurrentPage}} {{/mt:IfCurrentPage}} {{#mt:IfNotCurrentPage}} <a href="{{mt:PagerLink}}">{{mt:CurrentPage}}</a> {{/mt:IfNotCurrentPage}} </li> {{/mt:PagerBlock}} </ul>
22.
記事の読み込みとデータの加工 22 DataAPI.listEntries(<$mt:BlogID$>,
params, function(response) { var o = {}; o['mt:Entries'] = []; for (var i = 0; i < response.items.length; i++) { var r = response.items[i]; o['mt:Entries'].push({ 'mt:EntryTitle': r.title, 'mt:EntryExcerpt': r.excerpt, 'mt:EntryPermalink': r.permalink }); }
23.
ページ移動リンク出力用データの作成 23 o['mt:PagerBlock']
= []; for (var i = 0; i < totalPages; i++) { o['mt:PagerBlock'].push({ 'mt:CurrentPage': i + 1, 'mt:IfCurrentPage': (i + 1 == page_num), 'mt:IfNotCurrentPage': (i + 1 != page_num), 'mt:IfMoreResults': (i < totalPages - 1), 'mt:IfPreviousResults': i > 1, 'mt:NextLink': '#/' + (i + 2), 'mt:PreviousLink': '#/' + i, 'mt:PagerLink': '#/' + (i + 1), }); }
24.
Angular.jsでの例 24
25.
Angular.jsの概要 • https://angularjs.org/
• Google製/オープンソース • MVW(Model-View-Whatever)のWebアプリ開発フレームワーク • 多彩な機能 • テンプレートエンジン • 双方向データバインディング • URLのルーティング • Etc. 25
26.
Angular.jsの基本 26 テンプレートJavaScript
<html ng-app="SampleApp"> <head> ・・・ </head> <body ng-controller="SampleAppCtrl"> <ul> <li ng-repeat="name in names"> Hello, {{name}} </li> </ul> </body> </html> var SampleApp = angular.module('SampleApp', []); SampleApp.controller('SampleAppCtrl', function($scope) { $scope.names = [ 'Taro', 'Jiro', 'Saburo', ]; } );
27.
Angular.jsの基本 27 テンプレート結果
<html ng-app="SampleApp"> <head> ・・・ </head> <body ng-controller="SampleAppCtrl"> <ul> <li ng-repeat="name in names"> Hello, {{name}} </li> </ul> </body> </html> <ul> <li>Hello, Taro</li> <li>Hello, Jiro</li> <li>Hello, Saburo</li> </ul>
28.
Angular.js+Data APIの例:独自の記事編集画面 •
一覧で編集対象の記事を選択 • 編集ページで記事を編集して保存 • Data APIで記事の取得/保存を行い、Angular JSで入出力を管 理 28
29.
記事一覧出力部分 29 <ul>
<li ng-repeat="mt in mt.Entries"> <h2> <a href="{{mt.EntryPermalink}}">{{mt.EntryTitle}}</a> </h2> <p>{{mt.EntryExcerpt}}</p> </li> </ul>
30.
ページ移動リンク出力部分 30 <ul
class="pager"> <li ng-repeat="mt in mt.PagerBlock"> <span ng-if="mt.IfCurrentPage"> {{mt.CurrentPage}} </span> <a ng-if="mt.IfNotCurrentPage" href="{{mt.PagerLink}}"> {{mt.CurrentPage}} </a> </li> </ul>
31.
記事編集ページ出力部分 31 <form
ng-submit="save()"> <p>タイトル <input type="text" size="50" ng-model="mt.EntryTitle“ ng-disabled="disableFlag" /> </p> <p>本文<br /> <textarea rows="15" cols="80" ng-model="mt.EntryBody“ ng-disabled="disableFlag"></textarea> </p> <p><button type="submit">保存</button></p> </form>
32.
記事一覧の読み込みとデータの加工 32 DataAPI.listEntries(<$mt:BlogID$>,
params, function(response) { $scope.mt = {}; $scope.mt.Entries = []; for (var i = 0; i < response.items.length; i++) { var r = response.items[i]; $scope.mt.Entries.push({ EntryTitle: r.title, EntryExcerpt: r.excerpt, EntryPermalink: r.permalink }); } });
33.
記事編集画面の表示 33 DataAPI.getEntry(<$mt:BlogID$>,
$scope.entry_id, function(response) { $scope.mt.IfLogin = true; $scope.mt.EntryTitle = response.title; $scope.mt.EntryBody = response.body; $scope.$apply(); } );
34.
記事の保存 34 var
entry = { title: $scope.mt.EntryTitle, body: $scope.mt.EntryBody }; DataAPI.updateEntry(<$mt:BlogID$>, $scope.entry_id, entry, function(response) { alert('記事を保存しました。'); });
35.
テンプレートエンジンの使い分け • 案件によって異なる
• 単純なデータ出力だけ→ シンプルなテンプレートエンジン • Webアプリ的な複雑な処理→ フレームワーク 35
36.
まとめ 36
37.
まとめ • JavaScriptテンプレートエンジンを活用して、JavaScript絡みの処
理でもロジックとデザインを分離 • Data APIとJavaScriptテンプレートエンジンを組み合わせることも 可能 • テンプレートエンジンでData APIを活用 37
38.
One More Thing
38
39.
FreeLayoutCustomFieldプラグインのご紹介 • HTMLとCSSでデザインできるカスタムフィールド
• 複数の入力欄を自由にレイアウト可能 • 同じレイアウトの組み合わせを複数件入力可能 • 複数のレイアウトの組み合わせから選択して入力可能 39
40.
ご清聴ありがとうございました 40
Download now