Suche senden
Hochladen
Pjax1
•
Als PPTX, PDF herunterladen
•
6 gefällt mir
•
1,013 views
Kindai University
Folgen
Melden
Teilen
Melden
Teilen
1 von 18
Jetzt herunterladen
Empfohlen
SPAのルーティングの話
SPAのルーティングの話
ushiboy
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
yoshikawa_t
jQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & Tips
yoshikawa_t
jQuery Mobile 1.3 最新情報
jQuery Mobile 1.3 最新情報
yoshikawa_t
Jqm20120210
Jqm20120210
cmtomoda
jQuery Mobile 概要
jQuery Mobile 概要
トモロヲ いちがみ
20111203
20111203
小野 修司
Web 04
Web 04
XMLProJ2014
Empfohlen
SPAのルーティングの話
SPAのルーティングの話
ushiboy
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
yoshikawa_t
jQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & Tips
yoshikawa_t
jQuery Mobile 1.3 最新情報
jQuery Mobile 1.3 最新情報
yoshikawa_t
Jqm20120210
Jqm20120210
cmtomoda
jQuery Mobile 概要
jQuery Mobile 概要
トモロヲ いちがみ
20111203
20111203
小野 修司
Web 04
Web 04
XMLProJ2014
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
decode2016
HTML5 on ASP.NET
HTML5 on ASP.NET
Fujio Kojima
後期03
後期03
Takenori Nakagawa
Okinawapm#3
Okinawapm#3
Kei Kamikawa
Pyramid入門
Pyramid入門
Atsushi Odagiri
20080630
20080630
小野 修司
Start React with Browserify
Start React with Browserify
Muyuu Fujita
YUI
YUI
Tatsuya Sasaki
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Nobuhiro Nakajima
jQuery Mobileの基礎
jQuery Mobileの基礎
Takashi Okamoto
Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
【社内LT】JSあれこれ -読み込み編-
【社内LT】JSあれこれ -読み込み編-
Vitalify.Inc
deviseを利用した認証について@Minamirb
deviseを利用した認証について@Minamirb
Jun Fukaya
WordPressで提供するWeb API
WordPressで提供するWeb API
Yuko Toriyama
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
Flask勉強会その1
Flask勉強会その1
Masato Kawamura
20120609
20120609
小野 修司
WordPressと外部APIとの連携
WordPressと外部APIとの連携
Hidekazu Ishikawa
xmile by dreamfarmer
xmile by dreamfarmer
주영 전
Test for procedure text (writing test)
Test for procedure text (writing test)
aryantifitri
Realwants_SuperstarM
Realwants_SuperstarM
VentureSquare
HTML5 를 이용한 하이브리드앱 제작
HTML5 를 이용한 하이브리드앱 제작
Zany Lee
Weitere ähnliche Inhalte
Was ist angesagt?
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
decode2016
HTML5 on ASP.NET
HTML5 on ASP.NET
Fujio Kojima
後期03
後期03
Takenori Nakagawa
Okinawapm#3
Okinawapm#3
Kei Kamikawa
Pyramid入門
Pyramid入門
Atsushi Odagiri
20080630
20080630
小野 修司
Start React with Browserify
Start React with Browserify
Muyuu Fujita
YUI
YUI
Tatsuya Sasaki
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Nobuhiro Nakajima
jQuery Mobileの基礎
jQuery Mobileの基礎
Takashi Okamoto
Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
【社内LT】JSあれこれ -読み込み編-
【社内LT】JSあれこれ -読み込み編-
Vitalify.Inc
deviseを利用した認証について@Minamirb
deviseを利用した認証について@Minamirb
Jun Fukaya
WordPressで提供するWeb API
WordPressで提供するWeb API
Yuko Toriyama
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
Flask勉強会その1
Flask勉強会その1
Masato Kawamura
20120609
20120609
小野 修司
WordPressと外部APIとの連携
WordPressと外部APIとの連携
Hidekazu Ishikawa
Was ist angesagt?
(18)
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
HTML5 on ASP.NET
HTML5 on ASP.NET
後期03
後期03
Okinawapm#3
Okinawapm#3
Pyramid入門
Pyramid入門
20080630
20080630
Start React with Browserify
Start React with Browserify
YUI
YUI
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
jQuery Mobileの基礎
jQuery Mobileの基礎
Ruby Postgres 2009
Ruby Postgres 2009
【社内LT】JSあれこれ -読み込み編-
【社内LT】JSあれこれ -読み込み編-
deviseを利用した認証について@Minamirb
deviseを利用した認証について@Minamirb
WordPressで提供するWeb API
WordPressで提供するWeb API
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Flask勉強会その1
Flask勉強会その1
20120609
20120609
WordPressと外部APIとの連携
WordPressと外部APIとの連携
Andere mochten auch
xmile by dreamfarmer
xmile by dreamfarmer
주영 전
Test for procedure text (writing test)
Test for procedure text (writing test)
aryantifitri
Realwants_SuperstarM
Realwants_SuperstarM
VentureSquare
HTML5 를 이용한 하이브리드앱 제작
HTML5 를 이용한 하이브리드앱 제작
Zany Lee
하이브리드앱 개발 전략과 이슈
하이브리드앱 개발 전략과 이슈
동수 장
Hybrid Mobile Application Framework
Hybrid Mobile Application Framework
동수 장
오픈플랫폼(Open platform) 개요 및 사례
오픈플랫폼(Open platform) 개요 및 사례
Youngjo Seong
Andere mochten auch
(7)
xmile by dreamfarmer
xmile by dreamfarmer
Test for procedure text (writing test)
Test for procedure text (writing test)
Realwants_SuperstarM
Realwants_SuperstarM
HTML5 를 이용한 하이브리드앱 제작
HTML5 를 이용한 하이브리드앱 제작
하이브리드앱 개발 전략과 이슈
하이브리드앱 개발 전략과 이슈
Hybrid Mobile Application Framework
Hybrid Mobile Application Framework
오픈플랫폼(Open platform) 개요 및 사례
오픈플랫폼(Open platform) 개요 및 사례
Ähnlich wie Pjax1
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax
Kensaku Komatsu
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
Sho Ito
densan2014-late01
densan2014-late01
Takenori Nakagawa
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
WordPress と Bootstrap
WordPress と Bootstrap
株式会社ガリレオ(開発グループ)
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
Hijax - 少しずつAjaxへ
Hijax - 少しずつAjaxへ
Yi Gu
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
Yuki Minakawa
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
yoshikawa_t
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
Shumpei Shiraishi
勉強会資料①
勉強会資料①
真亮 坂口
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
Yosuke Onoue
イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱
Fumio SAGAWA
jsライブラリで実装する効率的なWeb制作
jsライブラリで実装する効率的なWeb制作
西畑 一馬
Web ブラウザの仕組み
Web ブラウザの仕組み
lufe
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
Futomi Hatano
Ajax basic
Ajax basic
Katsuyuki Seino
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Hideki Hashizume
Ähnlich wie Pjax1
(20)
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
densan2014-late01
densan2014-late01
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
WordPress と Bootstrap
WordPress と Bootstrap
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Hijax - 少しずつAjaxへ
Hijax - 少しずつAjaxへ
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
勉強会資料①
勉強会資料①
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱
jsライブラリで実装する効率的なWeb制作
jsライブラリで実装する効率的なWeb制作
Web ブラウザの仕組み
Web ブラウザの仕組み
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
Ajax basic
Ajax basic
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Mehr von Kindai University
Blockchain and Virtual Currency- Technical issues -
Blockchain and Virtual Currency- Technical issues -
Kindai University
Gbec finance and blockchain
Gbec finance and blockchain
Kindai University
Blockchian definition
Blockchian definition
Kindai University
Blockchain economy
Blockchain economy
Kindai University
ブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンス
Kindai University
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー
Kindai University
福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版
Kindai University
ブロックチェーンによるデータガバナンスと社会基盤の再構築
ブロックチェーンによるデータガバナンスと社会基盤の再構築
Kindai University
やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨
Kindai University
FinTechと金融サービスの将来像
FinTechと金融サービスの将来像
Kindai University
Congre chain説明資料
Congre chain説明資料
Kindai University
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech
Kindai University
ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題
Kindai University
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Kindai University
Open fintech and Kachatter
Open fintech and Kachatter
Kindai University
電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決
Kindai University
仮想通貨実験計画
仮想通貨実験計画
Kindai University
Bit Nexus
Bit Nexus
Kindai University
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
Kindai University
薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト
Kindai University
Mehr von Kindai University
(20)
Blockchain and Virtual Currency- Technical issues -
Blockchain and Virtual Currency- Technical issues -
Gbec finance and blockchain
Gbec finance and blockchain
Blockchian definition
Blockchian definition
Blockchain economy
Blockchain economy
ブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンス
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版
ブロックチェーンによるデータガバナンスと社会基盤の再構築
ブロックチェーンによるデータガバナンスと社会基盤の再構築
やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨
FinTechと金融サービスの将来像
FinTechと金融サービスの将来像
Congre chain説明資料
Congre chain説明資料
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech
ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Open fintech and Kachatter
Open fintech and Kachatter
電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決
仮想通貨実験計画
仮想通貨実験計画
Bit Nexus
Bit Nexus
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト
Pjax1
1.
Pjax Rubyist九州 山崎重一郎
Rubyist九州2011年11月例会 2011年11月26日
2.
Webアプリって いちいちページ遷移して使いにくい 反応が悪い
そもそも、サーバ側でユーザの操作に対するアクションを処 理したり、ビューを生成したりする必要があるのか? サーバ アク ション ビュー データとビュー 生成 HTML
3.
Webアプリって ブラウザ側でやれることはブラウザ側でやれば? ひとつのアプリの中でページ遷移って必要?
ブラウザ内で、DOM要素だけ処理すればいいんじゃない? 必要なデータだけJSONとかでサーバからもらえばいいじゃん。 サーバ アク ション データのみ JSON等 ビュー 生成
4.
じゃあAjaxなの? リソースにちゃんとしたURLがついてないと ブックマークできない、検索エンジンにひっかからない というか、そもそもそのリソースをWebで共有できないじゃないか REST
の基本は重要! リソース状態の流通 (REpresentational State Transfer) → サーバをステートレスに保ちながら、リソースの状態は表現で きる 例:リソースへのアクセス権限状態(OAuthのアクセストークンなど) ほら! やっぱりAjaxじゃだめじゃん
5.
ブラウザ側のリソースと サーバ側のリソース Ajax的なシステムでも同一のURLが指すのは同一のリソース
直接サーバにURLでアクセスした場合 → サーバからGET Ajax的に同じURLでアクセスした場合 → ブラウザ側で生成 サーバ リソース アク リソース ション リソース リソース リソース ビュー リソース 生成
6.
ブラウザ側にリソース表現の 実体が構成された場合 Ajax的にDOM要素の構成でできたリソース
その場合も仮想的にサーバ側にもリソースが存在しているよう にしたい → バックボタン、ブックマーク、検索エンジン、Web共有 サーバ リソース アク リソース ション リソース リソース リソース ビュー リソース 生成
7.
URLで直接的にリソースにアクセス した場合 もともとそのリソースはサーバに存在しているよ、という感じ ページの姿はブラウザ側で構成したものと全く同一にしたい
サーバ リソース リソース リソース
8.
Webブラウザの基本構成 (かなりいいかげんですが...) <a href="">...</a>
をクリックしたとき Webブラウザ クリック http GET など エンティティ マネージャ LF (ヘッダ) CR サーバ LF (ボディ) CR historyスタック 表示 レンダラ DOM <h1>aaa</h1><p>...
9.
Pjax 魔法のしくみ1 jQuery
で、ブラウザの機能を抑制/入替 HTML5 のpushState でhistoryスタックに履歴をプッシュ Webブラウザ クリック http GET などをしたつもり エンティティ マネージャ XjQuery preventDefault( ) historyスタック HTML5 pushState 表示 レンダラ DOM
10.
ブラウザの機能を抑制/入替え preventDefault()
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>preventDefalut()のテスト</title> <script type="text/javascript" src='jquery-1.7.js'></script> </head> <body> <h1>preventDefault()のテスト</h1> <p> <a id="enable" href="http://www.cacanet.org">このリンク</a>は有効にされています。 <a id="disable" href="http://www.cacanet.org">このリンク</a>は無効にされています。 </p> <p id="message"></p> <script type="text/javascript"> $("#disable").click(function (e) { e.preventDefault(); $("#message").html("ほら、ページ遷移しないでしょ?"); }); </script> </body> </html>
11.
HTML5 の history.pushState
history.pushState(historyオブジェクト, タイトル, URL); ブラウザの閲覧履歴スタックに強引にタイトルやURLを強引にプッシュ → とりあえずブックマークできる。 <html><head><meta charset="UTF-8"> <title>最初のページ</title> <script> function ps() {history.pushState(null,null,"http://rubyist.org/");} </script> </head> <body> <h1>pushSateのテスト</h1> <form> <input type="button" value="URLに注目" onclick="ps()" /> </form> </body></html>
12.
Pjax = jQueryの
jquery.pjax.js これがPjaxのオリジナル pushState + Ajax = Pjax https://github.com/defunkt/jquery-pjax 直接URLを入れても 同じページが表示される デモページ:http://pjax.heroku.com/
13.
jquery.pjax.js リクエストヘッダに HTTP_X_PJAX
を含める サーバ側は、HTTP_X_PJAXのときはAjax的にデータだけ送る そうでなければ、レイアウト付きのHTMLを返す Webブラウザ クリック エンティティ マネージャ X HTTP_X_PJAX jQuery jquery.pjax.js サーバ historyスタック HTML5 データ pushState だけ 表示 レンダラ DOM
14.
jquery.pjax.jsの使用例 sinatraの場合
# -*- coding: utf-8 -*- require 'sinatra' get '/' do erb "<h1>トップページです</h1>", :layout => !env['HTTP_X_PJAX'] end get '/hello' do erb "<h1>こんにちは!<%=Time.now%></h1>", :layout => !env['HTTP_X_PJAX'] end __END__ @@layout <!doctype html><html><head> <title><%= @title %></title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script> <script type="text/javascript" src="http://pjax.heroku.com/jquery.pjax.js"></script> <script type="text/javascript">$("a.pjax").pjax("#main");</script> </head> <body> <ul> <li><a href="/" class="pjax">ホーム</a></li> <li><a href="/hello" class="pjax">あいさつ</a></li> </ul> <div id="main"><%= yield %></div> </body></html>
15.
サーバ側の魔法の種明かし リクエストヘッダのHTTP_X_PJAXの有無チェックとレイアウ
トの抑制判定 get '/' do erb "<h1>トップページ</h1>", :layout => !env['HTTP_X_PJAX'] end Ajax的にDOM要素を更新する部分の指定(divでyieldを囲む) <div id="main"><%= yield %></div> a タグ(pjaxクラスの)に対するpjaxの適用 <li><a href="/" class="pjax">ホーム</a></li> <li><a href="/hello" class="pjax">あいさつ</a></li> <script type="text/javascript">$("a.pjax").pjax("#main");</script>
16.
PjaxはRails3.2 から標準になる 利点は明らかだから当然
今後のWebアプリケーションは基本的にページ遷移しなくなる Rails流のMVCも見直しが必要 コントロールやビュー生成の大部分をcoffeeScriptでやるの? Pjax を基本にした、すっきり新しいWebアプリフレームワーク を新規設計した方がはやい
17.
でも、なぜこんなにうまくいくのか? historyに pushState
を追加しただけなのに? なにか基本的な原理がありそう
18.
Rubyistの目線からの妄想 historyへのプッシュは、クロージャによるメモ化に似ている
理論的なかっこいいアプローチもあるかも クロージャによるメモ化 関数の入力と出力の視点からの意味は変わらない 既存の計算結果のキャッシュを使うか、関数の処理を実際に計算するか Pjax 同じURLにアクセスしたときのページの姿は変わらない ブラウザ側でページ要素のみを構成するか、サーバからページ全体を 持ってくるか Haskellの人は、「それはxxモナドだよ」とか言うかも...
Jetzt herunterladen