SlideShare a Scribd company logo
pjax~HTML5時代のAjaxサイトプラクティス~第19回HTML5とか勉強会こまつ けんさく
自己紹介名前: こまつけんさくHTML5とか勉強会スタッフGoogle 公認 API Expert (HTML5)Microsoft Valuable Professional (Internet Explorer)Twitter : http://twitter.com/komasshuBlog : http://blog.livedoor.jp/kotesaki/
Main ideapjaxで、より良いAjaxサイトを!!
今回の対象Ajaxを使って、サイトのコンテンツを切り替えるタイプいわゆる従来WebサイトのAjax対応
例えば
今回対象としないものばりばりのWebアプリ
AgendaAjaxのおさらいこれまでのAjaxの課題「戻る」への対応とソーシャルに優しくサーチに対応するには?全ての問題を解決するpjax
AgendaAjaxのおさらいこれまでのAjaxの課題「戻る」への対応とソーシャルに優しくサーチに対応するには?全ての問題を解決するpjax
Ajaxとは?ページを切り替えずに、データを取得/切り替える仕組みJavascriptを使い動的に利用new XMLHTTPRequest();$.ajax()XMLには限らないjsonTextHtml….
サンプル
特徴速い
安い
かっこいいAgendaAjaxのおさらいこれまでのAjaxの課題「戻る」への対応とソーシャルに優しくサーチに対応するには?全ての問題を解決するpjax
まずい書き方「戻る」で戻れないhttp://html5-19th.heroku.com/bad_ajax.html
ソーシャルに優しくない
Htmlを見ても分からない<header>     <h1>       bad ajax sample.    </h1>     - doesn't care about states ;-( -    </header>     <nav>     <ul>       <li><a href="/0">semantics</a></li>       <li><a href="/1">offline</a></li>       <li><a href="/2">device</a></li>       <li><a href="/3">connectivity</a></li>     </ul>     </nav>     <article>     </article>   </body>
検索で引っかからない
AgendaAjaxのおさらいこれまでのAjaxの課題「戻る」への対応とソーシャルに優しくサーチに対応するには?全ての問題を解決するpjax
ハッシュの利用http://html5-19th.heroku.com/hash_ajax.html
ハッシュの利用fragment identifierこれ
状態をhashで指定<nav>     <ul>       <li><a href="#0">semantics</a></li>       <li><a href="#1">offline</a></li>       <li><a href="#2">device</a></li>       <li><a href="#3">connectivity</a></li>     </ul> </nav>
Hashchange eventwindow.onhashchange = function(){    varhref = “/”+location.hash.substring(1); // ID取得      get(href); // ajax処理}See http://www.w3.org/TR/html5/history.html#hashchangeevent
効果と課題効果「戻る」に対応
ソーシャルでもOK
状態が、fragment identifierで指定されている課題サーチでは引っかからない
Javascriptoffだと見れないAgendaAjaxのおさらいこれまでのAjaxの課題「戻る」への対応とソーシャルに優しくサーチに対応するには?全ての問題を解決するpjax
Case1 : Hash-bang#!
Hash-bangこれ
Making ajaxcrawlablehttp://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html
クローラー用のURLを作成https://docs.google.com/present/view?id=dc75gmks_120cjkt2chf
http://twitter.com/?_escaped_fragment_=/komasshu
Case2 : <a>でハッシュを指定しない
普通にHTMLを記述(/0 - /3も同様)<nav>    <ul>      <li><a href="/0">semantics</a></li>      <li><a href="/1">offline</a></li>      <li><a href="/2">device</a></li>      <li><a href="/3">connectivity</a></li>    </ul>    </nav>    <article><h2>semantics</h2>      <hr>      <imgsrc="/images/semantics.jpg">      <br>ving meaning to structure, semantics are front and center with HTML5. A richer set of tags, along with RDFa, microdata, and microformats, are enabling a more useful, data driven web for both programs and your users.    </article>
Jsでトリック$("nav a").click(function(e){e.preventDefault();varhref=$(this).attr("href");location.hash=href;});window.onhashchange = function(){varhref=location.hash.substring(1);      get(href);}
参考)jquery-mobile(Automatic ajax)http://html5-19th.heroku.com/smp/
HTMLをajaxに自動変換<ul data-role="listview" data-inset="true">    <li><a href="./0">semantics</a></li>    <li><a href="./1">offline</a></li>    <li><a href="./2">device</a></li>    <li><a href="./3">connectivity</a></li>  </ul>+<script src="/javascripts/jquery.mobile-1.0b1.min.js"></script>
クローラーには普通のHTML/smp/0/smp/smp/1
更に。。。JavascriptoffのユーザーもOK!!
問題/smp/#/smp/0Javascript onJavascript offRestfulでもない。。。
AgendaAjaxのおさらいこれまでのAjaxの課題「戻る」への対応とソーシャルに優しくサーチに対応するには?全ての問題を解決するpjax
Pjaxpushstate + ajaxhttp://html5-19th.heroku.com/0
! Fragment identifier
HTMLを最初に作るprogressive enhancementhttp://html5-19th.heroku.com/1http://html5-19th.heroku.com/0
ステップ1 ページの切り替えを抑制$('nav a').each(function(e){// コンテキストメニュー(右クリックなど)の時は、pjax処理はしないif ( e.which > 1 || e.metaKey )          return truevarhref = $(this).attr('href');    $(this).click(function(e){e.preventDefault();pjaxGet(href, true);    });});
ステップ2 history apipushstatevar pjaxGet = function(file, push) {    $("article").hide();$.get("/data"+file, function(data){   $("article").html(data).fadeIn();    });if(push) {history.pushState("", “", file);    }}See. http://www.w3.org/TR/html5/history.html#history
ステップ3 popstate「戻る」への対応$(window).bind('popstate', function(e){        if(initState) {// $(window).load時のため、華麗にスルーinitState = false;            return;        }varhref=location.href.match(/[0-9]?$/)[0];pjaxGet("/"+href, false);});
専用HTML(レイアウト無し)をajaxでGEThttp://html5-19th.heroku.com/data/1
Sinatraの場合普通のHTMLget '/:id' do  @data = datas[params[:id].to_i]erb :indexendAjax用get '/data/:id' do  @data = datas[params[:id].to_i]erb :index, :layout => falseend
なので。。。「戻る」もOKソーシャルにも優しくクローラーへも対応JavascriptoffのユーザもOK
Jquery-pjaxhttps://github.com/defunkt/jquery-pjax
使い方$('nav a').pjax('article');http://example.net/2?_pjax=true( X-PJAX:true )defpjax?env['HTTP_X_PJAX']endget '/pjax-jquery/:id' do  @data = datas[params[:id].to_i]erb :index, :views => "pjax_jquery_views", :layout => !pjax?end
まとめ

More Related Content

Similar to 第19回html5とか勉強会 pjax (20)

PDF
Jqm20120210
cmtomoda
 
PDF
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
 
PPTX
JqueryMobile
Hazuki Wakabayashi
 
PDF
jQuery Mobile 1.2 最新情報 & Tips
yoshikawa_t
 
PDF
2012年8月10日 勉強会
Rin Yano
 
PDF
Objective Front-End JavaScript
Muyuu Fujita
 
PDF
HTML5の話
Hiroyuki Nozaki
 
PDF
はじめてのjQueryMobile(初級編)
Ichiro Yamamoto
 
PDF
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
PDF
jQuery Mobile(開発編)勉強会資料
Nobumasa Ura
 
PDF
jQuery Mobile 概要
トモロヲ いちがみ
 
PPTX
“観察”から始めるJSコーディング
Miwako Ichijo
 
PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Takashi Okamoto
 
PDF
Jqm20120804 publish
Takashi Okamoto
 
PDF
SocialWeb Conference vol.5 OpenSocial Night #2
Nobuhiro Nakajima
 
PDF
jQuery Mobile
yoshikawa_t
 
PDF
Html5で作るiPhoneアプリケーション2010
だいすけ ふるかわ
 
PPTX
jQuery Mobile入門
Shumpei Shiraishi
 
PDF
【ネイティブアドを支えるPhantomJS】
Kengo Shimada
 
PDF
Ajax 応用
Katsuyuki Seino
 
Jqm20120210
cmtomoda
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
 
JqueryMobile
Hazuki Wakabayashi
 
jQuery Mobile 1.2 最新情報 & Tips
yoshikawa_t
 
2012年8月10日 勉強会
Rin Yano
 
Objective Front-End JavaScript
Muyuu Fujita
 
HTML5の話
Hiroyuki Nozaki
 
はじめてのjQueryMobile(初級編)
Ichiro Yamamoto
 
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
jQuery Mobile(開発編)勉強会資料
Nobumasa Ura
 
jQuery Mobile 概要
トモロヲ いちがみ
 
“観察”から始めるJSコーディング
Miwako Ichijo
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Takashi Okamoto
 
Jqm20120804 publish
Takashi Okamoto
 
SocialWeb Conference vol.5 OpenSocial Night #2
Nobuhiro Nakajima
 
jQuery Mobile
yoshikawa_t
 
Html5で作るiPhoneアプリケーション2010
だいすけ ふるかわ
 
jQuery Mobile入門
Shumpei Shiraishi
 
【ネイティブアドを支えるPhantomJS】
Kengo Shimada
 
Ajax 応用
Katsuyuki Seino
 

More from Kensaku Komatsu (20)

PPTX
Media processing with serverless architecture
Kensaku Komatsu
 
PPTX
Boxdev lt-09082016
Kensaku Komatsu
 
PPTX
a pattern for PWA, PRPL
Kensaku Komatsu
 
PPTX
Full Matrix Auto Test Framework for WebRTC
Kensaku Komatsu
 
PPTX
WebRTC 101
Kensaku Komatsu
 
PDF
04122016 web rtc_globalsummit
Kensaku Komatsu
 
PPTX
02172016 web rtc_conf_komasshu
Kensaku Komatsu
 
PDF
SkyWay国内唯一のCPaaS
Kensaku Komatsu
 
PDF
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
Kensaku Komatsu
 
PDF
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
Kensaku Komatsu
 
PDF
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
Kensaku Komatsu
 
PPTX
FirefoxでgetStats()
Kensaku Komatsu
 
PPT
14th apr2015 リックテレコ勉強会
Kensaku Komatsu
 
PPTX
WebRTCが拓く 新たなWebビジネスの世界
Kensaku Komatsu
 
PPTX
Web of Thingsの現状とWebRTC活用の可能性
Kensaku Komatsu
 
PPTX
25th nov2014 52thhtml5j
Kensaku Komatsu
 
PPTX
知ってると得するかもしれないConstraintsたち
Kensaku Komatsu
 
PPTX
WebRTCにより可視化されるリアルタイムクラウド。求められるAPI
Kensaku Komatsu
 
PPTX
エフサミ2014 web rtcの傾向と対策
Kensaku Komatsu
 
PPTX
HTML5 Night 2014 Web x Network Technology ( WebRTC )
Kensaku Komatsu
 
Media processing with serverless architecture
Kensaku Komatsu
 
Boxdev lt-09082016
Kensaku Komatsu
 
a pattern for PWA, PRPL
Kensaku Komatsu
 
Full Matrix Auto Test Framework for WebRTC
Kensaku Komatsu
 
WebRTC 101
Kensaku Komatsu
 
04122016 web rtc_globalsummit
Kensaku Komatsu
 
02172016 web rtc_conf_komasshu
Kensaku Komatsu
 
SkyWay国内唯一のCPaaS
Kensaku Komatsu
 
ラズパイでWebRTC ヾ(*´∀`*)ノキャッキャ uv4l-webrtc 軽くハックしてみたよ!
Kensaku Komatsu
 
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
Kensaku Komatsu
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
Kensaku Komatsu
 
FirefoxでgetStats()
Kensaku Komatsu
 
14th apr2015 リックテレコ勉強会
Kensaku Komatsu
 
WebRTCが拓く 新たなWebビジネスの世界
Kensaku Komatsu
 
Web of Thingsの現状とWebRTC活用の可能性
Kensaku Komatsu
 
25th nov2014 52thhtml5j
Kensaku Komatsu
 
知ってると得するかもしれないConstraintsたち
Kensaku Komatsu
 
WebRTCにより可視化されるリアルタイムクラウド。求められるAPI
Kensaku Komatsu
 
エフサミ2014 web rtcの傾向と対策
Kensaku Komatsu
 
HTML5 Night 2014 Web x Network Technology ( WebRTC )
Kensaku Komatsu
 
Ad

Recently uploaded (13)

PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
PDF
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
PDF
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
PDF
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
Ad

第19回html5とか勉強会 pjax