Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Frontend Choices
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Alex Coles
September 18, 2014
Technology
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Frontend Choices
Alex Coles
September 18, 2014
More Decks by Alex Coles
See All by Alex Coles
How a language reflects its people (Brighton Ruby)
myabc
0
120
How a language reflects its people
myabc
0
110
Taking Rails beyond the asset pipeline (Workshop at RubyDay Italia)
myabc
0
90
Rails: beyond the asset pipeline (RubyC)
myabc
0
150
Frontend Choices (Tropical Ruby)
myabc
1
810
Frontend Choices (RubyConf Portugal)
myabc
1
480
Frontend Choices
myabc
0
310
Putting the Hype back in Hypermedia
myabc
1
250
DataMapper
myabc
2
240
Other Decks in Technology
See All in Technology
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
230
「顧客の声を聞かなければ何も始まらない」 ── 顧客の声から生まれた『AI返信補助機能』の開発プロセス / AICon2026_shikata_imai
rakus_dev
1
270
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
480
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
170
Type-safe IaC for Dart
coborinai
0
180
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
1
490
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
890
Jitera Company Deck
jitera
0
280
Aurora MySQL 8.4リリース! Rubyistが備えること / what-rubyist-should-prepare-for-aurora-mysql-8-4
fkmy
0
750
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
3
780
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
460
プロダクト開発組織の現在地(Ver.2026/07) / product-organization
kaonavi
0
400
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
The Invisible Side of Design
smashingmag
301
52k
Documentation Writing (for coders)
carmenintech
77
5.4k
For a Future-Friendly Web
brad_frost
183
10k
How to build a perfect <img>
jonoalderson
1
5.8k
Fireside Chat
paigeccino
42
4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Spectacular Lies of Maps
axbom
PRO
1
870
Music & Morning Musume
bryan
47
7.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Transcript
Frontend choices Alex Coles | Ruby & Rails Meetup, Дніпропетро́вськ
front end vs. frontend
Not really about choice
‘I’m a backend guy living in a frontend world’
About me
@myabc Alex Coles Berlin, Germany Finn GmbH
openproject.org
eurucamp.org
1..2..3
one one: background
Single Page Application Architecture
Single Page Application Architecture • Chunking • Controller • Templating
• Routing • Real-time Communicaton • Local storage min MAX
single page vs. traditional HTML
naturally content-dependent
What’s your content? Information Pages Membership sites Closed Systems
Content Criteria • Authentication • Caching • Indexing (SEO) •
Content TTL - relevance at a point in time
Curated content vs. dynamic • how many combinations of a
unique set of data: • a blog with comments • a hotel page with reviews • a dashboard
two two: where we are now
“The Rails Way”
History of the Rails Interface
“Rails is so 2005”
“Rails Way” back in 2005 • Server Generated HTML (ERB,
etc.) • Prototype • Scriptaculous • RJS
http://slash7.com/assets/2006/10/8/RJS-Demistified_Amy-Hoy-slash7_1.pdf RJS
RJS <div id="items"></div> <%= link_to_remote 'Add to cart', url:
{ controller: 'cart', action: 'add_to_cart' }%> erb view class CartController < ActionController::Base def add_to_cart @item = CartItem.new @cart.items << @item end end controller page.insert_html :bottom, :items, partial: 'item', object: @item page.replace_html :items_count, I18n.t(:item, count: @cart.items.count) rjs view
“Rails Way” now • Server Generated HTML (ERB, Slim, HAML
etc.) • jQuery • jQuery UI • Server generated JavaScript Responses (SJR)
Where we are now
JavaScript has grown up
No backend nobackend.org
Hoodie hood.ie
Meteor www.meteor.com
but I <3 Ruby
So here’s the question…
None
Room for Rails?
The Rails Way
– Marcin Stecki @madsheep at wroc_love.rb “Not his [DHH]'s responsibility
to tell us how to do these things.”
Frontend frameworks
Frontend (MV*) frameworks • AngularJS • Ember.js • KnockoutJS
Frontend (component) frameworks • ReactJS • Backbone.View (alone) • ExtJS
TodoMVC todomvc.com
None
None
None
What is most like Rails?
Ember.js is most like Rails • Everything should inherit from
Ember.Object (think ActiveRecord::Base.inherited) • Routing DSL • Vocabulary (templates, partials, etc.)
three three: practical usage
Using asset pipeline / sprockets
Use Bower
3 options for using Bower
gem install bower-rails Option 1
Rails 4 (Sprockets 2+) Option 2
config.assets.paths << File.join(Rails.root, 'vendor', 'assets', ‘components') Option 2
Option 3 rails-assets.org
ember-rails-api github.com/dockyard/ember-appkit-rails
the app/assets/javascripts silo
None
What is the way forward?
(IMHO)
Split Completely
I don’t like monoliths
Two applications: one API, one frontend
Rails or Sinatra for API A JS workflow for Frontend
Surprisingly testable (and fast)
One more thing…
Volt is a framework for building data rich web applications
shockingly fast. Play Video ! Get Started " Home Getting Started Docs API Blog Community # Volt Framework voltframework.com
Спасибо Спасибі
Questions?
@myabc