Skip to main content

Command Palette

Search for a command to run...

[Next.js] 나만의 학습 블로그 만들기#4 - 댓글 기능(Feat. Giscus)

Updated
3 min read
[Next.js] 나만의 학습 블로그 만들기#4 - 댓글 기능(Feat. Giscus)

댓글기능이 있으면 무조건 재밌을 거 같아서 넣어보려고 한다🤭

아무래도 개발에 관련된 학습 블로그라서 개발자들이 많을 것으로 예상했다 !

그래서 깃허브 이슈 기반 댓글 시스템을 기반으로 기능을 구현해보려고 한다.

👉🏻 도움이 많이 된 블로그 !

방법

알아봤을 때는 이렇게 두 개가 유명하다고 한다.

그럼 각각의 특징과 장단점을 알아보자

1. Giscus

특징

  • GitHub Discussions와 Issues 모두 지원

  • 다국어 지원 및 라이트/다크 모드 자동 감지 기능 탑재

  • 더 풍부한 커스터마이징 옵션 제공

  • 공식 웹사이트에서 설정 도구 제공으로 세팅이 편리함

  • React 컴포넌트로도 쉽게 설치 가능

장점

  • GitHub Discussions 지원해줘서 더 깔끔한 댓글 관리 가능

  • 라이트/다크 모드 자동 감지 및 테마 변경 기능 탑재

  • 다양한 설정 옵션으로 사용성 개선 가능

  • 깃허브의 공식 API를 이용해 안정적이고 빠름

  • 커뮤니티에서 적극적으로 유지보수 중

단점

  • Issues뿐 아니라 Discussions 활성화가 필요하므로 깃허브 리포지토리 관리가 조금 더 필요하다

  • 처음 설정이 약간 까다로울 수 있다

  • GitHub Discussions 활성화가 불가능한 공개 저장소나 일부 환경에서는 제한적일 수 있다


2. utterances

특징

  • GitHub Issues 댓글을 댓글 시스템으로 활용

  • 가볍고 설정이 간단함

  • 별도의 UI 커스터마이징 기능은 제한적

  • 다크 모드 지원 기본 제공

  • 공개 저장소뿐 아니라 프라이빗 저장소도 지원 가능

장점

  • 설정 매우 간단

  • 가볍고 빠름

  • GitHub Issues만으로 댓글 관리가 가능하여 환경 제약 적음

  • 공식 문서가 직관적이며 바로 적용 가능

단점

  • GitHub Discussions 지원 안 함

  • 커스터마이징 옵션이 상대적으로 적음

  • UI가 다소 단순하고 변경할 수 있는 폭이 적음

  • 다국어 지원이 없거나 제한적임


그래서 각각 어떨 때 사용하면 좋은건데?!

  • 좀 더 다양한 기능과 깔끔한 UI 그리고 다국어 지원이 필요하고 Discussions를 활용할 수 있으면 → Giscus

  • 간단하고 빠르게 GitHub Issues 댓글 시스템만 연동하고 싶고 Discussions는 필요 없으면 → utterances

나는 당연히 Giscus를 선택했다

선택한 이유✍🏻

  • 일단 나는 다국어 지원 기능을 넣을 예정이라서(next-i18next) Giscus가 훨씬 시너지 효과가 크고 유지보수도 편하지 않을까…?라는 생각을 했다. 초기 설정은 약간 귀찮을 수 있지만 한 번 세팅해두면 다국어도 자연스럽게 지원되고 사용자 경험도 훨씬 좋아질거라구 믿습니다..! 제발! 🤧

🌱 설정

  1. Repository > Settings > Features > Discussions 활성화

  1. giscus 웹사이트 들어가줍니당 ~

앱이 설치된 걸 확인할 수 있다 !

이제 저장소에 내 깃허브닉네임/레포이름을 입력해주면 조건이 만족한다고 뜬다😊

그리고 깃허브 레포에 가서 새로운 댓글 카테고리를 만들어줬다.

사용하지 않는 카테고리는 정리해줬다!!(이건 필수는 아님)

다시 사이트로 돌아와서 Comments를 선택해줬다.

나머지 옵션들을 선택해주면 <script>가 뜨는걸 확인할 수 있다.!

이제 삽입해주자 ~

설치

// @giscus/react 설치

npm install @giscus/react

<comments>컴포넌트를 만들어줬습니다.

import Giscus from "@giscus/react";

export default function Comments() {
  return (
    <Giscus
      repo="subinsong01/Coderhythm"
      repoId="R_kgDOPGJxzw"
      category="Comments"
      categoryId="DIC_kwDOPGJxz84Cs66K"
      mapping="pathname"
      strict="0"
      reactionsEnabled="1"
      emitMetadata="0"
      inputPosition="bottom"
      theme="preferred_color_scheme"
      lang="ko"
      loading="lazy"
    />
  );
}

나는 메인페이지에만 방문 댓글을 기능을 넣어주고 싶어서

<index.js>

import Comments from "@/components/Comments";
export default function Home() {

  return (
    <div className="w-full px-2">
      <Comments />
    </div>
  );

메인페이지에만 넣어줬다.

기능 완료 ! 👍🏻❤️

🌱 댓글 기능 구현하면서 느낀 점

처음에는 댓글 기능을 직접 구현할까 고민했지만 Giscus를 써보니 정말 간편하고 GitHub 기반이라 관리도 쉬웠다. 특히 블로그가 개발자 대상이라면 Giscus가 잘 어울린다고 느낌?!

처음에는 설정하는데 까다로울까 하고 걱정했지만 그렇게 복잡하지 않아서 꼭 개인 블로그에 적용해보길 강추한다,,✨

More from this blog

[회고] 풀스택 개발자로 (곧) 1년...

정말 정말 오랜만에 글을 작성한다 🤭 나는 현재 개발자로 취업한 지 거의 1년이 다 되어간다. 이제 10개월임 ! 처음에는 무조건 프론트엔드 개발자로 취업할거임!! 풀스택 NO ! 라는 마음으로 준비했던 취업.. 하지만 현실은 풀스택으로 취업하게 되었다. 취업을 하고 나니 여러가지 생각과 감정이 들었고 맨날 회고 적어야지 ~ 적어야지 ~ 했는데 10개

May 29, 20263 min read

[React] 클라이언트에서 이미지를 압축해보자

우리는 서버 비용을 직접 부담하고 있기 때문에 항상 최적화와 비용 절감 방법을 고민하게 된다. 현재 자유게시판이 활성화가 많이 되지는 않았지만 사용자들이 업로드하는 이미지가 평균 5MB 이상일 경우를 대비해서 클라이언트에서 이미지 압축을 진행했다. 웹에서는 크게 두 가지 방법이 있었는데 Canvas API를 직접 사용하는 방법 browser-image-compression 라이브러리를 활용하는 방법 이 있다. 여러 장점을 고려해 brow...

Oct 8, 20252 min read
[React] 클라이언트에서 이미지를 압축해보자

[책 추천] 프론트엔드 개발자라면 반드시 알아야 할 '웹 접근성' 이야기

내가 생각하는 프론트엔드 개발자는 단순히 보이는 화면만 구현하는 것을 넘어서 누구나 접근할 수 있는 웹을 만드는 데 중요한 역할을 해야 한다고 생각한다. 실무에 바로 적용하는 웹 접근성 가이드북 이번에 이 책을 받고 프엔들이 읽기에 너무 좋다고 생각해서 블로그에 추천 글까지 적게 되었다 ! 목차 Chatper1. 쉽게 이해하는 접근성 Chapter2. 웹 접근성의 기초 Chapter3. HTML 태그, 의미 있게 사용하기 Chpater4...

Jul 27, 20255 min read
[책 추천] 프론트엔드 개발자라면 반드시 알아야 할 '웹 접근성' 이야기

[Next.js] 나만의 학습 블로그 만들기#3-다국어 지원 (Feat.next-i18next)

오늘은 다국어 지원 가능한 기능 구현 과정을 적어보려고 한다. 원래는 댓글기능보다 먼저 구현하려고 했는데 ,, 갑자기 댓글기능 알아보다가 재밌어서 먼저 끝내버렸다,,,🙄 시작하기 전에 정말 어려웠다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 어려움이 많아서 기능 적용하는 데 시간이 꽤 걸렸다 ,,, 다국어 지원 기능 나는 영어랑 일본어를 추가해줬다 ! (해외취업도 관심 있기 때문에 나중에 이력서 낼 때 도움이 되지 않을까? ..🤭) 다국어 구현 방법 구현 방...

Jul 15, 20254 min read
[Next.js] 나만의 학습 블로그 만들기#3-다국어 지원 (Feat.next-i18next)
S

subin-dev-blog

28 posts

끊임없이 배우기 위해 노력합니다. 🌱