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
Turbolinks 101
Search
Alessandro Dias Batista
September 19, 2015
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Turbolinks 101
Alessandro Dias Batista
September 19, 2015
More Decks by Alessandro Dias Batista
See All by Alessandro Dias Batista
Usando agentes de IA no ambiente de desenvolvimento
adbatista
0
25
Aplicações Real-time com Phoenix LiveView
adbatista
0
30
Aprenda http criando seu server
adbatista
0
30
GURUPI - Conhecendo Phoenix Liveview
adbatista
0
27
Ciclo de trabalho Ágil
adbatista
1
65
Ruby e o Mercado de trabalho
adbatista
0
220
Other Decks in Programming
See All in Programming
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
460
Flow は今どうなっているか
mizdra
PRO
0
670
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.1k
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
250
What's New in Android 2026
veronikapj
0
270
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
720
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
580
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
130
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
540
メールのエイリアス機能を履き違えない
isshinfunada
0
250
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
How to Talk to Developers About Accessibility
jct
2
520
Scaling GitHub
holman
464
140k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Visualization
eitanlees
152
17k
Building Adaptive Systems
keathley
44
3.2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
780
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
Faster Mobile Websites
deanohume
310
32k
Transcript
Turbolinks 101 Alessandro Dias Codeminer42 adbatista @adbatista1
None
None
Turbolinks 101
Vamos falar de uma preocupação do desenvolvedor WEB
Como acelerar o carregamento de páginas
None
#= require jquery #= require jquery_ujs #= require_tree app
#= require jquery #= require jquery_ujs #= require_tree app #=
require pickadate/picker #= require pickadate/picker.date #= require select2 #= require jquery.slick #= require jquery.scrollTo #= require jquery-maskedinput #= require refile #= require components/modal
#= require jquery #= require jquery_ujs #= require_tree app #=
require pickadate/picker #= require pickadate/picker.date #= require select2 #= require cocoon #= require jquery.slick #= require jquery.scrollTo #= require jquery-maskedinput #= require refile #= require jQuery.toggleModifier #= require helpers/toggle_element #= require helpers/token_fields #= require helpers/hide_if #= require helpers/carousel #= require helpers/cocoon #= require helpers/pickadate_translate #= require helpers/pickadate #= require helpers/error_fields #= require helpers/sticky_header #= require helpers/mask_fields #= require components/accordions #= require components/tabs_navigation #= require components/modal #= require components/rounds_navigation #= require components/preview_upload #= require components/social_buttons #= require pages/tournament_creation #= require pages/tournaments #= require pages/player #= require page_control
Como funciona uma requisição de página ?
None
/users
/users
O que fazer?
Carregamento especulativo
Single Page Frameworks
Single Page Frameworks • É para Single Page applications; •
Dificulta SEO e acessibilidade; • Precisa de uma camada de API;
PJAX
Pjax • Configurável; • Boa performance; • Depende do JQuery;
• Precisa alterar o controller para retornar o conteúdo especifico;
Turbolinks
Turbolinks • Desenvolvida pela Basecamp (antiga 37Signals); • Usado na
versão mobile do campfire; • Simples de add na app; • Não precisa de alteração no backend; • Executa full page load em navegadores incompatíveis;
gem ‘turbolinks’ //= require jquery //= require turbolinks stylesheet_link_tag 'application',
media: 'all', 'data-turbolinks- track' => true javascript_include_tag 'application', 'data-turbolinks-track' => true
Turbolinks avalia todos scripts retornados dentro do body É recomendado
mover todos scripts para o <head>
Mas eu realmente preciso adicionar scripts dentro do <body>
<script data-turbolinks-eval=false>
E se eu quiser desabilitar o Turbolinks para algum link
especifico?
<a ... data-no-turbolink>
Turbolinks + JQuery
Turbolinks + JQuery $(document).on('page:load', function(){ .... });
Mas minha app já tem vários JQuery.ready...
gem ‘jquery-turbolinks’ //= require jquery //= require jquery.turbolinks //= require
jquery_ujs // ... your other scripts here ... //= require turbolinks
None
Turbolinks + libs externas http://reed.github.io/turbolinks-compatibility/
None
None
None