Suche senden
Hochladen
Rendr入門: サーバサイドで(も)動かす、Backbone.js
•
38 gefällt mir
•
14,856 views
Masahiko Tachizono
Folgen
東京Node学園祭2013で発表した「Rendr入門」のプレゼンスライドです。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 35
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
モダンJavaScriptフレームワークで技術的負債を作らないために
モダンJavaScriptフレームワークで技術的負債を作らないために
YukiOniki
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
miso- soup3
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
Wagby R9.1 ReleaseNote
Wagby R9.1 ReleaseNote
Yoshinori Nie
Our Track to Modern Angular
Our Track to Modern Angular
Yuta Shimizu
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
Masashi Shinbara
ReactでCMSを作ったときにハマったこと
ReactでCMSを作ったときにハマったこと
kazuki matsumura
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション
Kei Nakazawa
Empfohlen
モダンJavaScriptフレームワークで技術的負債を作らないために
モダンJavaScriptフレームワークで技術的負債を作らないために
YukiOniki
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
miso- soup3
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
Wagby R9.1 ReleaseNote
Wagby R9.1 ReleaseNote
Yoshinori Nie
Our Track to Modern Angular
Our Track to Modern Angular
Yuta Shimizu
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
Masashi Shinbara
ReactでCMSを作ったときにハマったこと
ReactでCMSを作ったときにハマったこと
kazuki matsumura
12.09.08 明星和楽2012 KLabハンズオンセッション
12.09.08 明星和楽2012 KLabハンズオンセッション
Kei Nakazawa
【資料】【Web開発者向け】クラウドセミナー@渋谷 #2【Azure入門】
【資料】【Web開発者向け】クラウドセミナー@渋谷 #2【Azure入門】
SAKURUG co.
え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?
Takayuki Miyauchi
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
Sugawara Genki
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
Takuro Sasaki
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Maaya Ishida
設定のカスタマイズで まだまだ使える Dreamweaver
設定のカスタマイズで まだまだ使える Dreamweaver
Akira Maruyama
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
Takayuki Miyauchi
「WordPress初心者講座」(2018.3.25) 講義資料01
「WordPress初心者講座」(2018.3.25) 講義資料01
Akihiro Moriyama
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
React+fluxを導入した話
React+fluxを導入した話
Yuki Ishikawa
WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)
Kazue Igarashi
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
Talk: serverless-express
Talk: serverless-express
HiroyukiTakakura
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
Shuichi Takaya
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
hideaki honda
土日でLineみたいなチャット作ってきた!
土日でLineみたいなチャット作ってきた!
Kenjiro Kubota
Innovation eggcloudnative
Innovation eggcloudnative
Takuro Sasaki
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
Kitani Kimiya
BACKBONE.JSでMVC始めませんか?
BACKBONE.JSでMVC始めませんか?
Toshio Ehara
re:Titanium 今ここでもう一度、はじめての Titanium #2
re:Titanium 今ここでもう一度、はじめての Titanium #2
Ryutaro Miyashita
Weitere ähnliche Inhalte
Was ist angesagt?
【資料】【Web開発者向け】クラウドセミナー@渋谷 #2【Azure入門】
【資料】【Web開発者向け】クラウドセミナー@渋谷 #2【Azure入門】
SAKURUG co.
え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?
Takayuki Miyauchi
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
Sugawara Genki
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
Takuro Sasaki
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Maaya Ishida
設定のカスタマイズで まだまだ使える Dreamweaver
設定のカスタマイズで まだまだ使える Dreamweaver
Akira Maruyama
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
Takayuki Miyauchi
「WordPress初心者講座」(2018.3.25) 講義資料01
「WordPress初心者講座」(2018.3.25) 講義資料01
Akihiro Moriyama
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
React+fluxを導入した話
React+fluxを導入した話
Yuki Ishikawa
WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)
Kazue Igarashi
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
Talk: serverless-express
Talk: serverless-express
HiroyukiTakakura
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
Shuichi Takaya
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
hideaki honda
土日でLineみたいなチャット作ってきた!
土日でLineみたいなチャット作ってきた!
Kenjiro Kubota
Innovation eggcloudnative
Innovation eggcloudnative
Takuro Sasaki
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
Kitani Kimiya
Was ist angesagt?
(20)
【資料】【Web開発者向け】クラウドセミナー@渋谷 #2【Azure入門】
【資料】【Web開発者向け】クラウドセミナー@渋谷 #2【Azure入門】
え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
設定のカスタマイズで まだまだ使える Dreamweaver
設定のカスタマイズで まだまだ使える Dreamweaver
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
「WordPress初心者講座」(2018.3.25) 講義資料01
「WordPress初心者講座」(2018.3.25) 講義資料01
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
React+fluxを導入した話
React+fluxを導入した話
WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
Talk: serverless-express
Talk: serverless-express
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
土日でLineみたいなチャット作ってきた!
土日でLineみたいなチャット作ってきた!
Innovation eggcloudnative
Innovation eggcloudnative
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
Andere mochten auch
BACKBONE.JSでMVC始めませんか?
BACKBONE.JSでMVC始めませんか?
Toshio Ehara
re:Titanium 今ここでもう一度、はじめての Titanium #2
re:Titanium 今ここでもう一度、はじめての Titanium #2
Ryutaro Miyashita
Backbone.js入門
Backbone.js入門
AdvancedTechNight
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門
Toshiaki Maki
Client-side MVC with Backbone.js
Client-side MVC with Backbone.js
iloveigloo
Vue.js ハンズオン資料
Vue.js ハンズオン資料
よしだ あつし
5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ
Kohei Kadowaki
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
Yuji Nojima
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
はじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
Andere mochten auch
(14)
BACKBONE.JSでMVC始めませんか?
BACKBONE.JSでMVC始めませんか?
re:Titanium 今ここでもう一度、はじめての Titanium #2
re:Titanium 今ここでもう一度、はじめての Titanium #2
Backbone.js入門
Backbone.js入門
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門
Client-side MVC with Backbone.js
Client-side MVC with Backbone.js
Vue.js ハンズオン資料
Vue.js ハンズオン資料
5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
はじめよう Backbone.js
はじめよう Backbone.js
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
Ähnlich wie Rendr入門: サーバサイドで(も)動かす、Backbone.js
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
Atsushi Yokohama (BEACHSIDE)
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Akira Inoue
Visual Studio 2012 で実現する HTML5 & マルチ デバイス時代の Web 開発
Visual Studio 2012 で実現する HTML5 & マルチ デバイス時代の Web 開発
Akira Inoue
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
Koichiro Ohba
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
VOYAGE GROUP
2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
UnicastWS vol.2
UnicastWS vol.2
Unicast Inc.
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
光一 原田
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
今なぜサーバーレスなのか
今なぜサーバーレスなのか
真吾 吉田
Lt7 SPA
Lt7 SPA
GIG inc.
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
Shota Umeda
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
Server Side Dart
Server Side Dart
Takayuki Yamaguchi
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -
真吾 吉田
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
Naoto Hori
Room Metro 2014-03-01
Room Metro 2014-03-01
Kazuhide Maruyama
AWS Lambda and Amazon API Gateway
AWS Lambda and Amazon API Gateway
Shinpei Ohtani
Ähnlich wie Rendr入門: サーバサイドで(も)動かす、Backbone.js
(20)
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 で実現する HTML5 & マルチ デバイス時代の Web 開発
Visual Studio 2012 で実現する HTML5 & マルチ デバイス時代の Web 開発
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
JavaScriptトレンド総括(2014)
JavaScriptトレンド総括(2014)
2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
UnicastWS vol.2
UnicastWS vol.2
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
サーバーレスの今とこれから
サーバーレスの今とこれから
今なぜサーバーレスなのか
今なぜサーバーレスなのか
Lt7 SPA
Lt7 SPA
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Server Side Dart
Server Side Dart
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
Room Metro 2014-03-01
Room Metro 2014-03-01
AWS Lambda and Amazon API Gateway
AWS Lambda and Amazon API Gateway
Rendr入門: サーバサイドで(も)動かす、Backbone.js
1.
Rendr入門 サーバサイドで(も)動かすBackbone.js
2.
Rendr入門: 目次 • Rendrとは? •
前提となる問題意識 • Rendrの仕組み • アプリ開発・運用の実際と、使ってみた感想 • Q&A
3.
Rendrとは?
4.
前提 • インタラクティブなウェブサービスを 作りたい。 • 同時に、高速なレスポンスを実現した い。
5.
どうするか? • JavaScriptを使って、クライアント 側でUIなどのインタラクティブな部分 を構築。 • 最初のレスポンスを早めるために、サ ーバ側でもHTMLをレンダリング。
6.
Rails + Backbone.js •
テンプレートにERB + Mustacheを 使い、サーバとクライアントで一部を 共有。 • クライアント側JavaScriptのコード 量が、7割くらいを占めるようにな る。
7.
新しい課題 • サーバのRubyと、クライアントの JavaScriptを行き来するのがストレ ス。 • コードが重複する(バリデーションな ど)。 •
サーバでのレンダリングはやめたくな い。
8.
そこでRendr • AirBnb社が開発したNode.js向けラ イブラリ。 • Backbone.jsをベースに、サーバ・ クライアント間で多くのコードを共有 できる。 •
Expressのミドルウェア。
9.
Backbone.js • JavaScript MVCフレームワーク。 •
Router、Model、Collection、 Viewから構成される。 • イベントによりモデルとビューが連 動。
10.
Rendrの動作《サーバ》 • Node.js上で、Backbone.jsアプリ (ルータ、モデル、ビュー、テンプレー ト)を動かしてHTMLを生成。 • CSS、JavaScriptなどアセットをコ ンパイルして配信。
11.
Rendrの動作《サーバ2》 • HTML生成に使った Backbone.View と Backbone.Model(Collection)を シリアライズ。 •
Backbone.Viewとデータを関連づ けるIDが、HTMLに埋め込まれる。
12.
Rendrの動作《クライアント》 • シリアライズされたデータと、HTML 上のIDを元にBackbone.Viewと Backbone.Modelを生成して関連づ ける。 • 以降は、通常のBackbone.jsアプリ と同様に動く。
13.
つまり • スタンドアローンのBackbone.jsア プリを、Node.jsを使って配信。 • 配信時に、初回のレンダリングは完了 した状態になっている。
14.
Rendrアプリの書き方
15.
Rendrの構成 • ルータ • コントローラ •
ビュー • テンプレート • データ・フェッチャー
16.
ルータ • URLから、実行するコントローラとア クションの組み合わせを決定する。 • サーバ側とクライアント側共通。
17.
ルータ設定の例 app/routes.js module.exports = function(match)
{ match('', 'home#index'); match('repos', 'repos#index'); match('repos/:owner/:name', 'repos#show'); match('users' , 'users#index'); match('users/:login', 'users#show'); match('users_lazy/:login', 'users#show_lazy'); };
18.
コントローラ • データの取得など、アプリケーション のロジック部分。 • 元のBackbone.jsには無い。 •
複数の「アクション」を持つ。 • サーバ側とクライアント側共通。
19.
コントローラの例 app/controllers/users_controller.js module.exports = { index:
function(params, callback) { var spec = { collection: { collection: 'Users', params: params } }; this.app.fetch(spec, function(err, result) { callback(err, result); }); } }
20.
ビュー • データ処理部分は、サーバ側とクライ アント側共通。 • サーバ側で、DOMを使うことはでき ない。 •
クライアント側では、いわゆる Backbone.Viewとして動く。
21.
ビュー app/views/users/index.js module.exports = BaseView.extend({ className:
'users_index_view' }); module.exports.getTemplateData = function(){ data = BaseView.prototype.getTemplateData.call(this); return data; }; module.exports.id = 'users/index';
22.
テンプレート • 標準では、Handlebarsを使用。 • サーバ側とクライアント側で、同じテ ンプレートが共有される。
23.
テンプレート app/templates/users/index.hbs <h1>Users</h1> <ul> {{#each models}} <li> <a href="/users/{{login}}">{{login}}</a> </li> {{/each}} </ul>
24.
データ・フェッチャー • サーバ・クライアント共通で使える API。 • サーバ動作時は、サーバの「データレ イヤー」からデータを取得。 •
クライアント動作時は、 Backbone.Model/Collectionの データ取得処理が動く。
25.
データレイヤー • データリクエストを処理する「データ レイヤー」を、自前で実装する必要が ある。 • ポリタスでは、Sequelize.jsを使っ てMySQLベースのデータレイヤーを 実装。
26.
開発環境 • Grunt • Stich •
CommonJS形式で、クライアン ト・サーバ共にコードを共有でき る。 • JavaScript・CSSのマージ • Mocha
27.
Rendrアプリ運用の実際
28.
動作環境 • サーバ • アプリ8台 •
マスターDB1台 + スレーブDB8台 • Capistranoでデプロイ • デプロイ時にJavaScript/CSSを コンパイル
29.
Rendrアプリのパフォーマンス • DBアクセスがない場合 →
Express アプリと同等の性能。 • Rendrそのもののオーバーヘッドは無 視できる範囲(いまのところ)。
30.
おわりに
31.
Rendrを選択した理由 • Sails.jsなどは、クライアント⇄サー バでのコードの共有の点で、しっくり 来なかった。 • 元々Backbone.jsベースのコード資 産があった。 •
Rendrはアプリ・コードの構成がシン プルで、AirBnbによる実績も期待で きた。
32.
Rendrにして良かった事 • サーバとクライアントで、「言語」を 共有できるようになった。 • サーバとクライアントで、多くの「コ ード」を共有できるようになった。 •
Backbone.jsのコードが、アセット 扱いからメイン扱いになってしっくり 来た。
33.
Rendrの気になるところ • まだ色々未開拓。 • データレイヤーに共通のお作法がな い。 •
頻繁に内部仕様が変わる。 • ドキュメント不足してる。
34.
Q&A
35.
• 連絡先: @mshk •
その他:「rendr」で検索
Jetzt herunterladen