Slide 1

Slide 1 text

Tayfun (Öziş) Erikan Tam donanımlı web/mobil uygulama geliştirici - Genel koordinatör @lab2023 [email protected] - @tayfunerikan Hotwire ile geliştirilen Rails uygulamasında Turbo 7'den Turbo 8'e geçiş Görsel kaynakları: https://rubyonrails.org https://hotwired.dev ➕ 🟰 ☺❤💪🚀

Slide 2

Slide 2 text

Merhaba 👋 Tayfun (Öziş) Erikan • Ruby, Rails, HOTWIRE (Turbo + Stimulus + Strada), Shape Up, Basecamp, Heroku ve AWS kullanarak web ve mobil uygulamalar yapıyorum. • @lab2023 & @bulutfon kurucu ortağıyım. • Evliyim ve bir kız babasıyım :) • Full-stack web/mobil geliştirici • SSI Dalgıç • Gitarist @fazla_mesai • Organizatör @ruby_turkiye

Slide 3

Slide 3 text

Bu sunum size neler vaadediyor? 🎁 Tarihçe · Tanıtım · Özellikler · İşlevler · Yenilikler · Kavramlar · Farklılıklar • Hotwire nedir? • Hotwire nasıl çalışır? • Hotwire neler içeriyor? • Hotwire nasıl bir felsefesi var? • Hotwire neyi farklı yapıyor? • Hotwire Rails kullanmalısınız? • Hotwire kimeler içindir? • Hotwire’e nereden başlamalısınız? The Creation of Adam - Michelangelo https://en.wikipedia.org/wiki/The_Creation_of_Adam

Slide 4

Slide 4 text

Rails’in ön uç çerçevesi: HOTWIRE https://hotwired.dev Görsel kaynağı: https://hotwired.dev

Slide 5

Slide 5 text

HOTWIRE / Turbolinks tarihçesi… Geçmiş’de ve Günümüz’de Web Geliştirme Daha detaylı bilgi için bkz: https://www.youtube.com/watch?v=SWEts0rlezA - RailsConf 2016 Görsel sahibi: Sam Stephenson

Slide 6

Slide 6 text

HOTWIRE / Turbolinks tarihçesi… Turbolinks’in ortaya koyduğu çözüm Görsel sahibi: Sam Stephenson

Slide 7

Slide 7 text

HOTWIRE / Tarihçe… Görsel kaynağı: https://github.com/turbolinks/turbolinks

Slide 8

Slide 8 text

HOTWIRE Turbo / Stimulus / Strada Hotwire, kablo üzerinden JSON yerine HTML göndererek çok fazla JavaScript kullanmadan modern web uygulamaları oluşturmaya yönelik alternatif bir yaklaşımdır. Bu, hızlı ilk yükleme sayfaları sağlar, şablon oluşturmayı sunucuda tutar ve geleneksel tek sayfalık bir uygulamayla ilişkili hız veya yanıt verebilirlikten herhangi bir ödün vermeden herhangi bir programlama dilinde daha basit, daha üretken bir geliştirme deneyimi sağlar.

Slide 9

Slide 9 text

HOTWIRE / Turbo Herhangi bir JavaScript yazmaya gerek kalmadan tek sayfalık bir web uygulamasının hızını yakalayın HOTWIRE'ın kalbi Turbo'dur. Turbo sayfa değişikliklerini ve form gönderimlerini hızlandırmak için sayfa içeriklerini Frame adı verilen küçük parçalara bölerek sunucu tarafından JavaScript kullanmadan güncellemenize olanak tanır. Bu güncellemeleri asenkron olarak WebSocket üzerinden de gerçekleştirebilirsiniz. Turbo akışları HTTP veya WebSocket ile gerçekleştirilebilir. Aynı zamanda Turbo iOS ve Android adaptörleri ile de haberleşir ve Strada ile güçlerini birleştirip hibrit uygulama geliştirmenize olanak tanır.

Slide 10

Slide 10 text

HOTWIRE / Turbo Replace visits Restoration visits Görsel kaynağı: https://hotwired.dev

Slide 11

Slide 11 text

HOTWIRE / Turbo • Turbo Drive, tam sayfa yeniden yükleme ihtiyacını ortadan kaldırarak bağlantıları ve form gönderimlerini hızlandırır. • Turbo Frame, sayfaları, gezinmeyi kapsayan ve tembelce yüklenebilen bağımsız bağlamlara ayrıştırır. • Turbo Stream, WebSocket, SSE üzerinden veya yalnızca HTML ve bir dizi CRUD benzeri eylem kullanarak form gönderimlerine yanıt olarak sayfa değişikliklerini sağlar. • Turbo Native, web ve yerel bölümler arasında sorunsuz geçişlerle, görkemli yekpare yapınızın yerel iOS ve Android uygulamalarınızın merkezini oluşturmasını sağlar. • Her şey kablo üzerinden HTML göndererek yapılır. Bunun yeterli olmadığı durumlarda Hotwire'ın diğer tarafına uzanabilir ve Stimulus ile işi bitirebilirsiniz. Turbo, çoğu web uygulamasının yazması gereken özel JavaScript miktarını önemli ölçüde azaltmak için tamamlayıcı teknikler kullanır:

Slide 12

Slide 12 text

HOTWIRE / Turbo Görsel kaynağı: https://hotwired.dev

Slide 13

Slide 13 text

HOTWIRE / Stimulus Zaten sahip olduğunuz HTML için mütevazı bir JavaScript çerçevesi. Turbo genellikle geleneksel olarak JavaScript gerektirecek olan etkileşimin en az %80'ini halletse de, yine de bir dizi özel kodun gerekli olduğu durumlar vardır. Stimulus, duruma ve kablolamaya yönelik HTML merkezli bir yaklaşımla bunu kolaylaştırır. Stimulus HTML elemanlarına bağlanarak tarayıcı üzerindeki gerçekleştirmek istediğiniz etkileşimleri sade HTML sözdizimi ve “data-attirbute” ekleri kullanarak yönetmenize olanak sunar. Böylece daha okunaklı bir HTML/JavaScript uygulaması geliştirmenizi sağlar. Stimulus kullanarak aşırıya kaçmadan, bir tutam JavaScript ile uygulamanıza daha fazla etkileşim kazandırabilirsiniz.

Slide 14

Slide 14 text

HOTWIRE / Stimulus Görsel kaynağı: https://hotwired.dev

Slide 15

Slide 15 text

HOTWIRE / Stimulus • Ön ucunuzun tamamını ele geçirmeye çalışmaz - aslında HTML'yi işlemekle hiç ilgilenmez. • Bunun yerine, HTML'nizi parlatmaya yetecek kadar davranışla zenginleştirmek için tasarlanmıştır. • Stimulus, Turbo ile güzel bir şekilde eşleşerek hızlı, zorlayıcı uygulamalar için minimum çabayla eksiksiz bir çözüm sağlar.

Slide 16

Slide 16 text

HOTWIRE / Strada Herhangi bir JavaScript yazmaya gerek kalmadan tek sayfalık bir web uygulamasının hızını yakalayın Native uygulamaların ve tamamen native ekranların yanı sıra web’in gücünden ve esnekliğinden faydalanmak için Turbo Native uygulamalar oluşturabilirsiniz. Şu anda Native uygulamanın Web Görünümü'nde neler olduğunu bilmesinin ve görüntülediği içeriğe uyum sağlaması zahmetlidir. Strada, bir mobil hibrit uygulamanın web ve yerel bölümlerinin HTML köprüsü öznitelikleri aracılığıyla birbirleriyle konuşma şeklini standartlaştırır. Bu, yerel değiştirmelerle web etkileşimlerini kademeli olarak yükseltmeyi kolaylaştırır. Strada, web uygulamanız ile yerel uygulama kodunuz arasında bir "köprü" görevi görerek web uygulamanız ile yerel uygulamanızın bileşen tabanlı bir çerçeve aracılığıyla iletişim kurmasına olanak tanır. Bir Web Görünümünde JavaScript koduyla ve uygulamanızdaki yerel kodla iletişim kurmanın karmaşıklığını ortadan kaldırır.

Slide 17

Slide 17 text

HOTWIRE / Strada Görsel kaynağı: https://hotwired.dev

Slide 18

Slide 18 text

HOTWIRE Kaynaklar • https://discuss.hotwired.dev • https://github.com/hopsoft/ turbo_ready • https://github.com/stimulus- components • https://github.com/stimulus-use/ stimulus-use • https://boringrails.com • https://www.hotrails.dev • https://guides.rubyonrails.org/ caching_with_rails.html • https://guides.rubyonrails.org/ association_basics.html#options-for- belongs-to-touch • https://guides.rubyonrails.org/ layouts_and_rendering.html • https://github.com/hotwired/turbo- rails • https://marcoroth.dev/posts/guide-to- custom-turbo-stream-actions

Slide 19

Slide 19 text

HOTWIRE Kaynaklar • https://superails.com • https://blog.corsego.com/hotwire- turbo-8-morphing • https://boringrails.com • https://boringrails.com/articles/ thinking-in-hotwire-progressive- enhancement • https://htmx.org/docs/#morphing • https://www.patreon.com/ TheHotwireClub/collections • https://github.com/gobijan/todo-rails- realtime-morphing • https://github.com/hotwired/turbo/ issues/1093 • https://github.com/hotwired/turbo/ pull/1099 • https://github.com/hotwired/turbo- rails/issues/545 • https://github.com/hotwired/turbo- rails/pull/521

Slide 20

Slide 20 text

https://hotwire.io

Slide 21

Slide 21 text

Rails ve Hotwire kimlere hitap eder? Vitruvian Man - Leonardo da Vinci https://en.wikipedia.org/wiki/Vitruvian_Man

Slide 22

Slide 22 text

Tam donanımlı geliştiriciler Hayatlarında basitlik ve sadelik arayanlar Hedef / ürün odaklı ve pragmatik geliştiriciler Yeniliklere açık ve teknolojiyi yakından takip edenler Hype teknolojilere kendini hemen kaptırmayanlar İşinde gücüde ve üretken insanlar Yaptıkları işin kalitesine ve felsefesine inananlar One-Person Framework Tek Kişilik Çerçeve Renaissance Developers Rönesans Geliştiricisi

Slide 23

Slide 23 text

RailsGuides! http://guides.rubyonrails.org Nereden başlamalıyım? https://www.rubyturkiye.org Ruby Türkiye! https://hotwired.dev Hotwire

Slide 24

Slide 24 text

Soru-Cevap-Sohbet Teşekkürler 😇 Tayfun (Öziş) Erikan Tam donanımlı web/mobil uygulama geliştirici - Genel koordinatör @lab2023 [email protected] - @tayfunerikan Bu sunumun hazırlanmasında kullanılan bazı görseller, kaynaklar ve referans içerikler: https://rubyonrails.org ve https://hotwired.dev'e aittir.