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
120
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
18
Aplicações Real-time com Phoenix LiveView
adbatista
0
28
Aprenda http criando seu server
adbatista
0
27
GURUPI - Conhecendo Phoenix Liveview
adbatista
0
24
Ciclo de trabalho Ágil
adbatista
1
64
Ruby e o Mercado de trabalho
adbatista
0
210
Other Decks in Programming
See All in Programming
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
New "Type" system on PicoRuby
pocke
1
920
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
130
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
670
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
480
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
120
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
130
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
330
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
240
3Dシーンの圧縮
fadis
1
770
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
820
Technical Leadership for Architectural Decision Making
baasie
3
410
Building AI with AI
inesmontani
PRO
1
1.1k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
Paper Plane (Part 1)
katiecoart
PRO
0
8.9k
Unsuck your backbone
ammeep
672
58k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
How STYLIGHT went responsive
nonsquared
100
6.2k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Code Reviewing Like a Champion
maltzj
528
40k
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