Türkçe

Yalnızca istemci taraflı uygulamalar için Next.js statik dışa aktarımlarını keşfedin. Hızlı, güvenli ve global olarak erişilebilir web deneyimleri oluşturmak için avantajları, sınırlamaları, kurulumu ve ileri teknikleri öğrenin.

Next.js Statik Dışa Aktarımları: Yalnızca İstemci Taraflı Uygulamalar Oluşturma

Next.js, geliştiricilerin performanslı, ölçeklenebilir ve SEO dostu web uygulamaları oluşturmasını sağlayan güçlü bir React framework'üdür. Next.js, sunucu taraflı oluşturma (SSR) ve statik site oluşturma (SSG) yetenekleriyle tanınsa da, statik dışa aktarımları kullanarak yalnızca istemci taraflı uygulamalar oluşturma esnekliği de sunar. Bu yaklaşım, tamamen istemci taraflı bir uygulama dağıtırken Next.js'in araçlarından ve yapısından yararlanmanıza olanak tanır. Bu yazı, Next.js statik dışa aktarımları ile yalnızca istemci taraflı uygulamalar oluşturma hakkında bilmeniz gereken her şeyi; avantajları, sınırlamaları, kurulum sürecini ve ileri teknikleri kapsayarak size rehberlik edecektir.

Next.js Statik Dışa Aktarımları Nedir?

Next.js'teki statik dışa aktarımlar, derleme (build) sürecinde uygulamanızın tamamen statik bir versiyonunu oluşturma işlemidir. Bu, tüm HTML, CSS ve JavaScript dosyalarının önceden oluşturulduğu ve doğrudan statik bir dosya sunucusundan (örneğin, Netlify, Vercel, AWS S3 veya geleneksel bir web sunucusu) sunulmaya hazır olduğu anlamına gelir. Sunucu taraflı oluşturulan uygulamaların aksine, gelen istekleri işlemek için bir Node.js sunucusuna gerek yoktur. Bunun yerine, tüm uygulama statik varlıklar topluluğu olarak teslim edilir.

Yalnızca istemci taraflı bir uygulamayı hedeflerken, Next.js bu statik varlıkları, tüm dinamik davranışların istemci tarafı JavaScript tarafından yönetileceği varsayımıyla oluşturur. Bu, özellikle istemci taraflı yönlendirme, API çağrıları ve kullanıcı etkileşimlerine dayanan Tek Sayfa Uygulamaları (SPA'lar) için kullanışlıdır.

İstemci Taraflı Uygulamalar İçin Neden Statik Dışa Aktarımları Seçmelisiniz?

Next.js statik dışa aktarımları ile istemci taraflı uygulamalar oluşturmak birçok çekici avantaj sunar:

Statik Dışa Aktarımların Sınırlamaları

Statik dışa aktarımlar sayısız fayda sunsa da, sınırlamalarının farkında olmak önemlidir:

Next.js'i Statik Dışa Aktarımlar İçin Ayarlama

İşte Next.js'i statik dışa aktarımlar için nasıl ayarlayacağınıza dair adım adım bir kılavuz:

1. Yeni Bir Next.js Projesi Oluşturun

Eğer zaten bir Next.js projeniz yoksa, aşağıdaki komutu kullanarak bir tane oluşturun:

npx create-next-app my-client-app

Kurulum sürecinde ihtiyaçlarınıza en uygun seçenekleri seçin (örneğin, TypeScript, ESLint).

2. `next.config.js` Dosyasını Yapılandırın

Projenizin kök dizinindeki `next.config.js` dosyasını açın ve aşağıdaki yapılandırmayı ekleyin:

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export',
  trailingSlash: true,
  // Optional: Change links `/me` -> `/me/` and emit `/me.html` -> `/me/index.html`
  // see https://nextjs.org/docs/app/api-reference/next-config#trailing-slash
  // experimental:
  //  {appDir: false}
}

module.exports = nextConfig

`output: 'export'` seçeneği, Next.js'e uygulamanızın statik bir dışa aktarımını oluşturmasını söyler. `trailingSlash: true` ayarı genellikle tutarlı bir URL yapısı sağlamak ve potansiyel SEO sorunlarından kaçınmak için önerilir.

3. `package.json` Dosyasını Güncelleyin

`package.json` dosyanızın `scripts` bölümünü, statik dışa aktarımlar için bir derleme betiği içerecek şekilde değiştirin:

{
  "scripts": {
    "dev": "next dev",
    "build": "next build && next export",
    "start": "next start",
    "lint": "next lint"
  }
}

Bu betik önce Next.js uygulamanızı derleyecek ve ardından statik bir dizine dışa aktaracaktır.

4. İstemci Taraflı Yönlendirmeyi Uygulayın

İstemci taraflı bir uygulama oluşturduğunuz için, `next/router` modülünü veya `react-router-dom` gibi üçüncü taraf bir kütüphaneyi kullanarak istemci taraflı yönlendirmeyi uygulamanız gerekecektir. İşte `next/router` kullanarak bir örnek:

import { useRouter } from 'next/router';
import Link from 'next/link';

function HomePage() {
  const router = useRouter();

  const handleClick = () => {
    router.push('/about');
  };

  return (
    <div>
      <h1>Home Page</h1>
      <p>Welcome to the home page!</p>
      <button onClick={handleClick}>Go to About Page</button>

      <Link href="/about">
         <a>Go to About Page (using Link)</a>
      </Link>
    </div>
  );
}

export default HomePage;

Sorunsuz istemci taraflı geçişler sağlamak için dahili gezinme için `next/link`'ten `Link` bileşenini kullanmayı unutmayın.

5. İstemci Tarafında Veri Çekmeyi Yönetin

İstemci taraflı bir uygulamada, tüm veri çekme işlemleri `useEffect` veya `useState` hook'ları gibi teknikler kullanılarak istemci tarafında yapılmalıdır. Örneğin:

import { useState, useEffect } from 'react';

function DataPage() {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    async function fetchData() {
      try {
        const response = await fetch('https://api.example.com/data');
        if (!response.ok) {
          throw new Error(`HTTP error! status: ${response.status}`);
        }
        const jsonData = await response.json();
        setData(jsonData);
      } catch (e) {
        setError(e);
      } finally {
        setLoading(false);
      }
    }

    fetchData();
  }, []);

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;
  if (!data) return <p>No data to display</p>;

  return (
    <div>
      <h1>Data Page</h1>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
}

export default DataPage;

6. Uygulamanızı Derleyin ve Dışa Aktarın

Statik dışa aktarımı oluşturmak için derleme betiğini çalıştırın:

npm run build

Bu, uygulamanız için statik HTML, CSS ve JavaScript dosyalarını içeren bir `out` (veya Next.js sürümüne bağlı olarak `public`) dizini oluşturacaktır.

7. Statik Sitenizi Dağıtın

Şimdi `out` dizininin içeriğini Netlify, Vercel, AWS S3 veya GitHub Pages gibi bir statik barındırma sağlayıcısına dağıtabilirsiniz. Çoğu sağlayıcı, süreci otomatikleştirmek için basit sürükle-bırak dağıtımı veya komut satırı araçları sunar.

İstemci Taraflı Next.js Uygulamaları İçin İleri Teknikler

İşte istemci taraflı Next.js uygulamalarınızı optimize etmek için bazı ileri teknikler:

1. Kod Bölme ve Tembel Yükleme

Kodunuzu isteğe bağlı olarak yüklenen daha küçük parçalara bölmek için dinamik import'ları (`import()`) kullanın. Bu, özellikle büyük uygulamalar için ilk yükleme sürelerini önemli ölçüde iyileştirebilir.

import React, { Suspense } from 'react';

const MyComponent = React.lazy(() => import('./MyComponent'));

function MyPage() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <MyComponent />
    </Suspense>
  );
}

2. Görüntü Optimizasyonu

Görüntü optimizasyonu için `next/image` bileşenini kullanın. Bu bileşen, görüntüleri farklı cihazlar ve ekran boyutları için otomatik olarak optimize ederek performansı ve kullanıcı deneyimini iyileştirir. Tembel yüklemeyi, duyarlı görüntüleri ve çeşitli görüntü formatlarını destekler.

import Image from 'next/image';

function MyComponent() {
  return (
    <Image
      src="/images/my-image.jpg"
      alt="My Image"
      width={500}
      height={300}
    />
  );
}

3. Service Worker'lar

Çevrimdışı işlevsellik sağlamak ve performansı artırmak için bir service worker uygulayın. Service worker, arka planda çalışan ve ağ isteklerini kesebilen, varlıkları önbelleğe alabilen ve anlık bildirimler gönderebilen bir betiktir. `next-pwa` gibi kütüphaneler, Next.js uygulamanıza bir service worker ekleme sürecini basitleştirebilir.

4. Ortam Değişkenleri

Uygulamanızı farklı ortamlar (örneğin, geliştirme, hazırlık, üretim) için yapılandırmak üzere ortam değişkenlerini kullanın. Next.js, `.env` dosyası ve `process.env` nesnesi aracılığıyla ortam değişkenleri için yerleşik destek sağlar. İstemci taraflı kodda hassas bilgileri ifşa etmemeye dikkat edin. Ortam değişkenlerini öncelikle ifşa edilmesi güvenli olan yapılandırma ayarları için kullanın.

5. İzleme ve Analitik

Performans metriklerini izlemek, hataları belirlemek ve kullanıcı davranışı hakkında bilgi edinmek için bir izleme ve analitik hizmeti (örneğin, Google Analytics, Sentry veya New Relic) entegre edin. Bu, uygulamanızı optimize etmenize ve zamanla kullanıcı deneyimini iyileştirmenize yardımcı olacaktır.

6. İstemci Taraflı Uygulamalarda SEO Optimizasyonu

Statik dışa aktarımlar başlangıçta bir HTML yapısı sağlasa da, istemci tarafı ağırlıklı uygulamalarda daha iyi SEO için şu stratejileri göz önünde bulundurun:

Uluslararasılaştırma (i18n) Konuları

Global bir kitle için istemci taraflı bir uygulama oluştururken uluslararasılaştırma (i18n) çok önemlidir. İşte bazı en iyi uygulamalar:

Doğru Yaklaşımı Seçmek: Statik Dışa Aktarma vs. Sunucu Taraflı Oluşturma

Statik dışa aktarımları mı yoksa sunucu taraflı oluşturmayı mı kullanacağınıza karar vermek, uygulamanızın özel gereksinimlerine bağlıdır. Aşağıdaki faktörleri göz önünde bulundurun:

Gerçek Dünya Örnekleri

İşte Next.js statik dışa aktarımlarından yararlanabilecek bazı gerçek dünya uygulama örnekleri:

Örnek: Uluslararası Şirket Web Sitesi

New York, Londra ve Tokyo'da ofisleri olan bir şirket düşünün. İngilizce, Fransızca ve Japonca dillerinde bir web sitesi istiyorlar. Bir başsız CMS ve i18n kütüphaneleriyle birleştirilmiş bir Next.js statik dışa aktarımı ideal olabilir. CMS çevrilmiş içeriği saklar, Next.js bunu istemci tarafında çeker ve oluşturur ve statik site hızlı erişim için global olarak bir CDN'de dağıtılabilir.

Sonuç

Next.js statik dışa aktarımları, Next.js framework'ünün avantajlarıyla yalnızca istemci taraflı uygulamalar oluşturmak için güçlü bir yol sağlar. Avantajları, sınırlamaları, kurulum sürecini ve ileri teknikleri anlayarak, özel gereksinimlerinizi karşılayan hızlı, güvenli ve global olarak erişilebilir web deneyimleri oluşturabilirsiniz. İster basit bir açılış sayfası ister karmaşık bir SPA oluşturuyor olun, statik dışa aktarımlar web geliştirme cephanenizde değerli bir araç olabilir.

Next.js Statik Dışa Aktarımları: Yalnızca İstemci Taraflı Uygulamalar Oluşturma | MLOG