DEV Community

Yunus Emre Mert
Yunus Emre Mert

Posted on

Frontend'in Geleceği: En İyi Teknikler

Yaz tatili birçok kişi için dinlenmek, yeni yerler keşfetmek ve aileyle vakit geçirmek anlamına gelir. Deniz kenarına gitmek, dağlarda yürüyüş yapmak veya sadece evde kalıp bir kitap okumak tatilin keyfini çıkarmak için harika yollar olabilir. Bu yıl benim tatil planlarım biraz farklıydı. Bu yazıyı kaleme almamın nedeni, tatil anılarımı sizinle paylaşmak değil, aslında son zamanlarda front-end geliştirme dünyasında gözlemlediğim ilginç bir trendi ele almak.

Front-end teknolojileri son yıllarda inanılmaz bir evrim geçirdi ve bu alandaki gelişmeler web uygulamalarının geleceğini şekillendiriyor. Artık yalnızca web sayfalarının görünümünden sorumlu değiliz, aynı zamanda kullanıcı deneyimini iyileştiren, etkileşimli ve dinamik özellikler sunan bir rol üstleniyoruz. Gelin, front-end geliştirmenin geleceğini şekillendirecek bazı önemli tekniklere ve bunların pratik uygulamalarına birlikte göz atalım.

React ve Angular ile Komponent Tabanlı Mimari

Komponent tabanlı mimari, front-end geliştirmenin geleceğinde önemli bir rol oynamaktadır. Bu mimari yaklaşım, kullanıcı arayüzünü yeniden kullanılabilir ve bağımsız komponentlere bölmeyi içerir. React ve Angular gibi popüler kütüphaneler ve çerçeveler, bu mimari tarzı benimseyerek geliştiricilerin modüler ve ölçeklenebilir uygulamalar oluşturmasına olanak tanıyor.

Örneğin, bir e-ticaret web sitesi düşünün. Ürün kartı, sepet simgesi ve kullanıcı hesabı paneli gibi çeşitli kullanıcı arayüzü öğeleri komponentler halinde tasarlanabilir. Bu komponentler birbirinden bağımsız olarak geliştirilebilir ve gerektiğinde farklı sayfalar veya bölümler arasında yeniden kullanılabilir.

React Örneği:

// Ürün Kartı Komponenti
import React from 'react';

function ProductCard({ image, name, price, rating }) {
  return (
    <div className="product-card">
      <img src={image} alt={name} />
      <h2>{name}</h2>
      <p>Fiyat: {price}</p>
      <div className="rating">Puan: {rating}/5</div>
    </div>
  );
}

export default ProductCard;

// Ana Uygulama
import React from 'react';
import ProductCard from './ProductCard';

function App() {
  const products = [
    {
      image: 'product1.jpg',
      name: 'Ürün A',
      price: '100 TL',
      rating: 4,
    },
    // Daha fazla ürün...
  ];

  return (
    <div className="app">
      <h1>En İyi Ürünlerimiz</h1>
      {products.map((product) => (
        <ProductCard key={product.name} {...product} />
      ))}
    </div>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

Yukarıdaki örnekte, ProductCard komponenti, ürün görüntüleri, isimleri, fiyatları ve puanları gibi prop'ları (özellikleri) kabul eden ve bunları kullanıcı dostu bir şekilde sunan yeniden kullanılabilir bir komponenttir. Ana uygulama (App) komponenti, ürün verilerini ProductCard komponentine geçirerek farklı ürün kartları oluşturur. Bu yaklaşım, kodun bakımını ve yeniden kullanımını kolaylaştırır.

Next.js ile Sunucu Tarafı İşleme (SSR) ve Statik Oluşturma (SSG)

Sunucu tarafı işleme (SSR) ve statik oluşturma (SSG), modern front-end uygulamalarında performans ve SEO açısından kritik öneme sahip iki tekniktir. Next.js, React uygulamalarında bu teknikleri uygulamayı kolaylaştıran popüler bir çerçeve.

SSR, her istek için sunucuda dinamik olarak oluşturulan sayfaları sunar. Bu, özellikle dinamik veriler kullanan uygulamalar için idealdir. Öte yandan, SSG, derleme zamanında sayfaları önceden oluşturarak statik dosyalar olarak sunar. Bu yaklaşım, içerik sık sık değişmeyen bloglar veya dokümantasyon siteleri için harikadır.

Next.js Örneği: SSG ile Blog Sayfası Oluşturma

// pages/blog/[slug].js
import React from 'react';
import { getPostBySlug } from '../../lib/api';

function BlogPost({ post }) {
  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

export async function getStaticPaths() {
  const posts = await getPosts(); // Tüm blog gönderilerini al
  const paths = posts.map((post) => ({ params: { slug: post.slug } }));

  return {
    paths,
    fallback: false, // 404 sayfasına izin verme
  };
}

export async function getStaticProps({ params }) {
  const post = await getPostBySlug(params.slug);
  return { props: { post } };
}

export default BlogPost;
Enter fullscreen mode Exit fullscreen mode

Yukarıdaki örnekte, [slug] dinamik rotası, her blog gönderisinin benzersiz tanımlayıcısına göre bir sayfa oluşturmamızı sağlar. getStaticPaths ve getStaticProps fonksiyonları, derleme zamanında tüm blog gönderilerini almamızı ve bunlara karşılık gelen yolları tanımlamamıza olanak tanır. getStaticProps, belirli bir blog gönderisinin içeriğini almak için kullanılır. Sonuç olarak, Next.js her blog gönderisi için statik olarak oluşturulmuş sayfalar oluşturur, bu da hızlı yükleme süreleri ve daha iyi SEO sağlayarak arama motorlarının içerikleri daha kolay taramasını sağlar.

Prisma ile Veri Erişiminin Sadeleştirilmesi

Veritabanı ile etkileşime girmek, çoğu zaman front-end geliştiriciler için karmaşık ve zaman alıcı olabilir. Prisma, PostgreSQL, MongoDB ve MySQL gibi popüler veritabanları için nesne ilişkisel eşleme (ORM) ve sorgu oluşturucu sağlar. Bu, geliştiricilerin veritabanı sorgularını daha kolay yazmasına ve yönetmesine olanak tanır.

Örneğin, bir e-ticaret uygulamasında ürün verilerini yönetmek istediğimizi varsayalım. Prisma, veritabanı şemasını tanımlamak, verileri sorgulamak ve güncellemek için kullanabileceğimiz basit bir arayüz sunar.

Prisma Örneği: MongoDB ile Ürün Verilerini Sorgulama

İlk olarak, prisma/schema.prisma dosyamızda veritabanı şemamızı tanımlayalım:

model Product {
  id    String   @id @default(uuid())
  name String
  price Float
  rating Int
}
Enter fullscreen mode Exit fullscreen mode

Ardından, ürün verilerini sorgulamak için aşağıdaki kodu kullanabiliriz:

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function getProducts() {
  const products = await prisma.product.findMany();
  return products;
}

getProducts()
  .then(products => console.log(products))
  .catch(error => console.error(error))
  .finally(() => prisma.$disconnect());
Enter fullscreen mode Exit fullscreen mode

Bu örnekte, prisma.product.findMany(), MongoDB veritabanındaki tüm Product kayıtlarını almak için kullanılır. Prisma, arka planda verileri almak için uygun sorguyu oluşturur ve yönetir, böylece geliştiriciler daha yüksek seviyeli bir API kullanarak verilerle çalışabilir.

Sonuç

Front-end geliştirmenin geleceği, komponent tabanlı mimariden SSR ve SSG'ye, ayrıca modern araçların kullanımından geçer. React, Angular ve Next.js gibi kütüphaneler ve çerçeveler, geliştiricilerin güçlü ve ölçeklenebilir uygulamalar oluşturmasına olanak tanır. Prisma, veritabanı etkileşimi gibi karmaşık görevleri basitleştirerek geliştirme sürecini hızlandırır.

Bu tekniklerin ve araçların bir kombinasyonu, front-end geliştiricilerin kullanıcı dostu ve yüksek performanslı web uygulamaları oluşturmasına yardımcı olur. Gelecekte, front-end teknolojilerinin evrimine devam edeceği ve geliştiricilerin daha da etkileyici uygulamalar oluşturmalarına olanak tanıyacak yenilikler getireceği kesin.

Top comments (0)