Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2024'e Girerken JavaScript: Yeni JavaScript run...

2024'e Girerken JavaScript: Yeni JavaScript runtime’larıyla bir ekosistem örmek (R5)

GDG DevFest Ankara 2023 için yapmış olduğum sunum

Eser Ozvataf

December 17, 2023
Tweet

More Decks by Eser Ozvataf

Other Decks in Technology

Transcript

  1. 2024'e Girerken JavaScript Yeni JavaScript runtime’larıyla bir ekosistem örmek Eser

    Özvataf Head of Engineering @ Teknasyon GDG DevFest Ankara 17 / 12 / 2023 eser.live
  2. Twitter: @eserozvataf YouTube: https://eser.live Eser Özvataf Head of Engineering @

    Teknasyon eser.live GDG DevFest Ankara 17 / 12 / 2023
  3. 2023 süresince JavaScript ile, 4 backend, 3 frontend proje geliştirdim.

    JavaScript’i Tercih ettiğim senaryolar: ➔ Sistem programlamaya inilmeyen “uygulama senaryoları”nda, ➔ Kod paylaşımı ve portatifliği gerektiğinde, (RN, SSR, vb.) ➔ Tek bir thread kullanmak daha iyi olduğunda, (Concurrency vs Parallelism)
  4. Mimari değişim - Islands Architecture UI Composition SPA Routing Load

    Optimization Server-Side Rendering Handling Forms Partial Loading * Full-Stack geliştirme, az context-switching * Geliştirme sürecini hızlandırma, daha az kurulum * Daha hızlı bir kullanıcı deneyimi, optimizasyon
  5. ➔ Geriye doğru uyumluluk ➔ Hızlı paket yöneticisi ➔ Safari’nin

    JavaScriptCore Motorunun Avantajları ➔ Bilinen tüm araçlar onun üzerine kurulu ➔ Sahibi OpenJS Vakfı Node.js Deno ➔ Ryan Dahl’ın yeni tasarımı ➔ Geliştirici deneyimi (DX) ➔ node_modules yok ➔ Standartlar ve güçlü kütüphane desteği ➔ Serverless hizmetler ➔ Jupyter Notebook desteği Runtime çeşitliliği - Aktörler Bun
  6. Runtime çeşitliliği - Dahili araçlar Araç NPM Node.js Bun Deno

    Create Project - npm init bun init deno init Install Tool - npm install –global bun install –global deno install Task Runner - npm run bun run deno task Test Runner Jest node –test bun test deno test .Env Files dotenv –env-file ✔ –env TypeScript ts-node ❌ ✔ ✔ Bundler webpack ❌ bun build deno vendor Benchmarker benchmark ❌ ❌ ✔ Compiler pkg ❌ ❌ deno compile Linter eslint ❌ ❌ deno lint Formatter prettier ❌ ❌ deno fmt Docs typedoc ❌ ❌ deno doc
  7. Runtime çeşitliliği - Bağımlılık ve kütüphane yönetimi ➔ Node.js ve

    Bun geriye doğru uyumluluk sağlıyorlar. ➔ Deno node_modules’suz çalışabiliyor. Buradaki yönetimi PNPM gibi değil, v8’in yönetimine veriyor. Web sayfaları dolaşırken bilgisayarınıza inen resimden ve CSS’den bir farkı kalmıyor JavaScript dosyalarının. ➔ Deno’da Go’nun standart kütüphanesine yakın bir kütüphanenin yanı sıra artık NPM desteği de oldukça olgun. ➔ Runtime’lardaki geliştirme deneyimi, browser’lara yaklaşıyor. Fetch, WebSockets, WebStreams, Intl v.b. Browser API’ları gün geçtikçe runtime’lara da ekleniyor. ➔ Deno ve Bun URL üzerinden modül yükleme desteği ile lerna, nx ve turbo gibi monorepo araçlarına ihtiyacı ortadan kaldırıyor.
  8. ➔ Full-Stack geliştirme (Islands Architecture ile) ◆ Next.js ◆ Astro

    ◆ Deno Fresh (veya Deno SaaSKit) ➔ Signal bazlı client-server iletişim ◆ Qwik ◆ Preact ◆ Deno Fresh ◆ Angular Elimizdeki araçlar - Frameworkler
  9. ➔ Deno aynı zamanda bir serverless çözümler sunuyor*. ◆ Deno

    Deploy ◆ Deno KV ◆ Deno KV Queues ◆ Deno Cron* ➔ Vercel hizmetleri daha çok Node.js merkezli çalışıyor. ◆ Vercel ◆ Vercel KV ◆ Vercel Postgres ◆ Vercel Blob Elimizdeki araçlar - Serverless hizmetler
  10. Karmaşadan odaklanmaya - Codebase ➔ Built-in araçlarla, araç konfigurasyonları ve

    birbirleri ile entegrasyonları giderek azalıyor. Eskisi gibi testing suite’e TypeScript tanıtmak zorunda kalmıyoruz. ➔ Bundler ve transpilerları hayatımızdan çıkartmak eskisinden daha kolay. Bu sayede monorepo yönetimi de sorun olmaktan çıkıyor. ➔ Kısmen PNPM ve Deno ile birlikte node_modules yükünden kurtulmaya doğru gidiyoruz. ➔ ES Modules’u kullanarak konum-bağımsız JavaScript modülleri/dosyaları kullanılabilmeye başlandı.
  11. Karmaşadan odaklanmaya - Hızlı prototipleme ➔ CDN üzerinden uygulama bootstrap

    edebiliyorsunuz! ➔ Deno kendi yerel ortamınızda geliştirmeyi kolaylaştırıyor. ➔ TDD için hazır bir ortam vaad ediyor. ➔ Deno ve Bun stand-alone binary oluşturup hızlıca Dockerize edebilmenizi sağlıyor. ➔ deno.dev üzerinden GitHub’la login olup ister copy-paste ile, ister deployctl ile saniyeler içinde bir API yayına alabiliyorsunuz.