Next JS için Kullandığım Paketler

Next JS için Kullandığım Paketler

Projelerde çoğunlukla kullandığım bazı javascript paketlerini kullanımları ile paylaştım.

Genel olarak client tarafında bir projeye başlarken kullandığım paketleri sizlerle paylaşmak istedim. Yapacağınız işlerin çoğu aslında birbirine çok benzeyen işler olacaktır. Bu yüzden kendinize bir boilerplate hazırlayıp arada sırada paketlerinizi güncelleyerek yeni bir projeye başlarken hız kazanabilirsiniz.

Olmazsa olmaz JavaScript paketleri

Validator

Projenize kuracağnız "validator.js" paketini herhangi bir doğrulama işleminde kullanabilirsiniz. Genellikle bir web formunun girilen bilgilerin doğruluğunu kontrol etmek için kullanılan bir yöntemdir. Bu doğrulama işlemi, formun gönderilmesi sırasında yapılır ve genellikle formun gönderilmesine izin vermez veya verir, ancak bu formdaki tüm gerekli alanların doldurulmuş olup olmadığını kontrol eder.

Doğrulama işlemi, HTML kodunda form alanlarına "kurallar" ekleyerek yapılabilir ve bu kurallar Javascript kodu tarafından yürütülerek uygulanır. Örneğin, bir formdaki bir alana sadece sayısal değerlerin girilmesini isteyebilir veya bir e-posta adresinin geçerli bir biçimde girilip girilmediğini kontrol edebilirsiniz. Doğrulama işlemi, kullanıcının formdaki bilgileri yanlış veya eksik girdiği durumlarda hata mesajları gösterilerek kullanıcıya bildirilir. Kullanımı kolay, hızlı ve çok fazla yer kaplamayan bir pakettir.

yarn add validator

Örnek kullanımı

import validator from 'validator';

validator.isEmail('foo@bar.com'); //=> true

validator.isEmail('foo'); //=> false

İşinizi kolaylaştırabilecek farklı doğrulama yöntemleri de mevcuttur.

import validator from 'validator';

validator.isStrongPassword("abcdef",{ 
minLength: 8, 
minLowercase: 1, 
minUppercase: 1, 
minNumbers: 1, 
minSymbols: 1, 
returnScore: false, 
pointsPerUnique: 1, 
pointsPerRepeat: 0.5, 
pointsForContainingLower: 10, 
pointsForContainingUpper: 10, 
pointsForContainingNumber: 10, 
pointsForContainingSymbol: 10 });  //=> false

validator.isPassportNumber("123456","TR") //=> false

Paket bilgilerine ulaşmak için https://www.npmjs.com/package/validator

Sweet Alert 2

İlginç bir şekilde adult siteleri tarafından fonlanan 🤣 bu paket sayesinde web sayfanızda çok şık popup uyarılar gösterebilirsiniz.

Yüklemek için

yarn add sweetalert2

Kullanımı için

import Swal from 'sweetalert2' 

Swal.fire({
    icon: 'error',
    title: 'Oops...',
    text: 'Something went wrong!',
    footer: '<a href="">Why do I have this issue?</a>'
});

NPM sayfası için https://www.npmjs.com/package/sweetalert2

Dokümantasyon için https://sweetalert2.github.io/

HTML React Parser

HTML dizelerini sizi uğraştırmadan React ile uyumlu render edebileceğiniz paket.

Yüklemek için

yarn add html-react-parser
import parse from "html-react-parser"; 

parse('<p>Hello, World!</p>'); // React.createElement('p', {}, 'Hello, World!')

NPM sayfası için https://www.npmjs.com/package/html-react-parser

Next JS Progress Bar

Sayfaların yüklenmeden önce veya sayfalar arası geçişlerde yükleme ekranı gösterimine yarayan bu paket web sayfalarınızı biraz daha şık gösterecektir.

Yüklemek için

yarn add nextjs-progressbar

Kullanımı için

// pages/_app.js dosyası içinde 

import NextNProgress from 'nextjs-progressbar';

export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <NextNProgress />
      <Component {...pageProps} />;
    </>
  );
}

Varsayılan ayarları bu şekilde kullanabilirsiniz.

<NextNProgress color="#29D" startPosition={0.3} stopDelayMs={200} height={3} showOnShallow={true} />

NPM sayfası için https://www.npmjs.com/package/nextjs-progressbar

React Icons

Artık sağımız solumuz ikonlar haline geldiği için ve ihtiyacımız olan ikonlar her zaman aynı üretici tarafından sağlanmadığı için bu paket sayesinde ücretsiz olarak farklı ikon paketlerini tek bir paket ile kullanabilirsiniz.

Yüklemek için

yarn add react-icons

Bu paket ile Ant Design Icons, Bootstrap Icons, BoxIcons, Circum Icons, Devicons, Feather, Flat Color Icons, Font Awesome, Game Icons, Github Octicons icons, Grommet-Icons, Heroicons, Heroicons 2, IcoMoon Free, Ionicons 4, Ionicons 5, Material Design icons, Radix Icons, Remix Icon, Simple Icons, Simple Line Icons, Tabler Icons, Themify Icons, Typicons, VS Code Icons, Weather Icons ve css.gg ikon paketlerini projenizde kullanabilirsiniz.

Örnek kullanımı

import { FaUser } from 'react-icons/fa';

<FaUser/>

Dokümantasyon ve ikonlar için https://react-icons.github.io/react-icons/

DayJS

Bu ufacık paket sayesinde tüm tarih işlemlerinizi yapabilirsiniz.

Yüklemek için

yarn add dayjs

Kullanım için

import dayjs from "dayjs"; 

dayjs('2023-08-08') // parse

dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // display

dayjs().set('month', 3).month() // get & set

dayjs().add(1, 'year') // manipulate

dayjs().isBefore(dayjs()) // query

İnsanların kendi gün ve saat formatında kullanmaları için

import dayjs from "dayjs"; 
import "dayjs/locale/tr"; 

dayjs.locale('tr') // Türkiye için global ayarlar 

dayjs("2023-07-07").format("DD MMM YYYY"); // 07 Tem 2022

Dokümantasyon için https://day.js.org/docs/en/installation/installation

Next SEO

Next SEO paketi sizin için bir çok arama motoru optimizasyon işlemini hızlı ve kolay bir şekilde hallediyor. Mutlaka olması gereken bu paket sayesinde arama motorlarında tabi burada kastımız Google oluyor neredeyse tekel olduğu için, üst sıralara çıkma şansınızı doğru kullanım ile artırıyor.

Yüklemek için

yarn add next-seo

Basit bir kullanım örneği

import {Fragment} from "react";
import { NextSeo } from 'next-seo';

const Page = () => (
  <Fragment>
    <NextSeo
      title="Sayfanızın başlığı"
      description="Sayfanız hakkında açıklama"
      canonical="https://www.dorukkaraboncuk.com"
    />
    <p>Sayfanızın içeriği</p>
  </Fragment>
);

export default Page;

NPM sayfası https://www.npmjs.com/package/next-seo

React Lazy Load Image Component

Bu paket ile React uygulamalarında kullanılan resimleri yüklemeyi geciktirmeyi (lazy load) ve yükleme işlemini optimize edebilirsiniz. Bu paket, resimlerin sayfa içinde görüntülenirken yüklenmesini geciktirir ve bu sayede sayfa yükleme hızını hızlı hale getirir. Özellikle büyük sayfalarda veya çok sayıda resim içeren sayfalarda bu paket çok yararlı olabilir. Kullanımı basit bir şekilde yapılabilir ve sadece birkaç satır kod ekleyerek resimlerin yüklenme işlemini optimize edebilirsiniz.

Yüklemek için

yarn add react-lazy-load-image-component

Kullanımı için

import LazyLoad from 'react-lazy-load-image-component';

import React from 'react';
import { LazyLoadImage } from 'react-lazy-load-image-component';

const MyImage = ({ image }) => (
  <div>
    <LazyLoadImage
      alt={image.alt}
      height={image.height}
      src={image.src}
      width={image.width} />
    <span>{image.caption}</span>
  </div>
);

export default MyImage;

Bu şekilde görsellerinizi optimize etmiş olursunuz. Bu paketi aynı zamanda component için de kullanabilirsiniz.

Dokumantasyon için https://github.com/Aljullu/react-lazy-load-image-component

React Player

Bu paketi, React uygulamalarında video ve müzik oynatımı için kullanılabilecek bir pakettir. Bu paket, farklı video barındırma platformlarından video ve müzik dosyalarını oynatmanıza olanak sağlar. Örneğin, YouTube, Vimeo, SoundCloud gibi platformlardan video ve müzik dosyalarını oynatabilir, dosyaların oynatımı sırasında kontroller ekleyebilir ve oynatımını kontrol edebilirsiniz. Kullanımı basit bir şekilde yapılabilir ve sadece birkaç satır kod ekleyerek video ve müzik oynatımını sağlayabilirsiniz.

yarn add react-player

Basit kullanımı için

import React from 'react'
import ReactPlayer from 'react-player'

<ReactPlayer url='https://www.youtube.com/watch?v=videoId' />

Bu şekilde video veya müzik oynatımını sağlamış olursunuz. Daha fazla bilgi ve kullanım örnekleri için paketin GitHub sayfasını ziyaret edebilirsiniz github.com/CookPete/react-player

Next Intl

Next JS'nin kendi dokümantasyonlarında da önerdiği bir pakettir. Bu paketi, Next.js uygulamalarında dil çevirileri yapmak için kullanabilirsiniz. Dil çevirilerini yaparken dil dosyalarının yönetimi ve dil değiştirme işlemlerini kolaylaştırır. Kullanımı basit bir şekilde yapılabilir ve sadece birkaç satır kod ekleyerek dil çevirilerini yapabilirsiniz.

Yüklemek için

yarn add next-intl

Basit kullanımı için

//app.js dosyamız içerisinde 

import {NextIntlProvider} from 'next-intl';

export default function App({Component, pageProps}) {
  return (
    <NextIntlProvider messages={pageProps.messages}>
      <Component {...pageProps} />
    </NextIntlProvider>
  );
}

Sayfada kullanımı

// pages/index.js

const Homepage = () => {
  const t = useTranslations('Homepage');

  return (
      <div>{t('hello'}</div>
  );
}

export async function getStaticProps(context) {
  const locale = context.locale;
  return {
    props: {
      messages: (await import(`../../messages/${locale}.json`)).default
    }
  };
}

Örnek dil dosyası

// tr.json
{
  "Homepage": {
    "hello": "Merhaba"
  }
}

Sonuç

Sonuç olarak herkesin sevdiği ve kullandığı paketler vardır. Benim de burada mutlaka unuttuğum paketler vardır. Yorumlarda sizinde beğendiğiniz paketler olursa paylaşırsanız yazıya ekleyebilirim.

Bonus Canvas Confetti

Web sayfalarında kolayca confetti (konfeti) efekti oluşturmanıza olanak sağlar. Bu paket, HTML5 canvas özelliğini kullanarak confetti efektini oluşturur ve efektin görünümünü özelleştirme seçenekleri sunar. Örneğin, confetti parçacıklarının renklerini, boyutlarını, hızlarını ve diğer özelliklerini belirleyebilirsiniz. Kullanımı basit bir şekilde yapılabilir ve sadece birkaç satır kod ekleyerek confetti efektini oluşturabilirsiniz.

Yüklemek için

yarn add canvas-confetti

Basit kullanım için

import confetti from "canvas-confetti";

confetti({
    angle: randomInRange(55, 125),
    spread: randomInRange(150, 270),
    particleCount: randomInRange(250, 200),
    origin: { y: 0.6 },
});