머리말지금까지 교육, 포럼, CMS 등 두세 개의 프로젝트를 진행했는데, 각 프로젝트는 댓글 기능을 사용하기 때문에 댓글란을 따로 분리해서 컴포넌트화된 모듈로 만들고 싶습니다. 개발 작업을 절약할 뿐만 아니라 이 모듈의 기능을 더 잘 이해할 수 있게 해줍니다. 현재 주로 TP 프레임워크로 개발 중이기 때문에, 다음 예시들은 TP 프레임워크의 문법으로 제시할 예정입니다. 하지만 개인적으로는 핵심 방법 부분이 부족하다고 느끼며, 연관 모델의 기능을 제대로 활용하지 못했습니다. 다음 업데이트에서 이것을 구현할 예정입니다. 주요 부분에서는 지금까지 접해본 여러 코멘트 시스템의 방식에 대해 이야기하고, 각각의 장단점을 분석하며, 데이터 테이블 설계와 추출에 대한 아이디어를 제공해 여러분께 도움이 되길 바랍니다. 부적절한 점이 있으면 누구나 바로잡아도 좋습니다.
댓글 시스템
일반적인 댓글 시스템은 세 가지 주요 유형이 있습니다: 건물 내 구축, 스트리밍 모드, 인용 모드(모두 제가 직접 명명한 것), 아래에서는 이 세 가지 장단점과 이를 어떻게 구현할지에 초점을 맞춥니다.
1. 건물 내 건물 모드 건물 모델 내 건물은 각 댓글이 1층에 위치하며, 바이두 티에바와 젠슈의 댓글 시스템처럼 댓글에 대한 모든 답변이 건물 내에 표시된다는 의미입니다.
이점:댓글에 대해 대화를 쉽게 이해할 수 있도록 집중된 시각으로 답변하세요.
단점:내용이 너무 많으면 페이지네이션이 필요하는데, 그게 더 복잡해요.
데이터 시트 설계:
- ID (자가 추가 기본 키)
- target_id (댓글 주제의 ID, 필요에 따라 article_id, course_id 등으로 변경할 수 있음)
- parent_id (메인 댓글 ID)
- reply_uid (댓글 작성자의 사용자 ID를 기록하고, 메인 댓글에 답글할 때 0)
- UID (댓글을 남긴 사용자 ID)
- 내용 (댓글 내용)
- 다른 분야들은... (시간, 상태 등)
백엔드 비즈니스 로직:
2. 흐름 모드
플로우 모드는 이름 그대로 정보의 흐름과 유사하며, 댓글이든 답글이든 각 메시지는 라라벨-차이나 커뮤니티의 댓글 시스템처럼 한 층을 차지합니다.
이점:논리는 간단하고 구현하기 쉽습니다
단점:대화의 내용은 중앙에서 제시될 수 없으며, 대화의 내용을 이해하는 것도 쉽지 않습니다.
데이터 시트 설계:
- ID (자가 추가 기본 키)
- target_id (댓글 주제의 ID, 필요에 따라 article_id, course_id 등으로 변경할 수 있음)
- reply_uid (댓글 작성자의 사용자 ID를 기록하고, 메인 댓글에 답글할 때 0)
- UID (댓글을 남긴 사용자 ID)
- 내용 (댓글 내용)
- 다른 분야들은... (시간, 상태 등)
백엔드 비즈니스 로직
3. 인용 모드
인용 모드는 스트리밍 모드와 유사하지만, 답변 내용이 인용된 내용과 함께 공개됩니다.
이점:답글이 어떤 댓글을 향하는지 이해하면 대화가 무엇에 관한 것인지 이해하는 데 도움이 됩니다. 구현이 비교적 쉽습니다.
단점:스트림 모드와 마찬가지로, 전체 대화를 대표하지는 않습니다. 장단점을 분석하여 기준 패턴이 건물 내 건물과 흐름 모드 간의 타협임을 알 수 있습니다.
데이터 시트 설계:
- ID (자가 추가 기본 키)
- target_id (댓글 주제의 ID, 필요에 따라 article_id, course_id 등으로 변경할 수 있음)
- reply_id (댓글 작성자의 댓글 ID, 메인 댓글은 0)
- UID (댓글을 남긴 사용자 ID)
- 내용 (댓글 내용)
- 다른 분야들은... (시간, 상태 등)
백엔드 비즈니스 로직:
리뷰 목록을 얻으려면 댓글 테이블을 연결해 사용자 정보와 댓글을 인용한 댓글을 확인할 수 있습니다. 그 다음 간단한 페이지네이션 과정을 진행하세요.
위 내용은 세 가지 댓글 모드의 예비 요약이며, 스타일 부분은 아직 정리되지 않았고, 블로그 프로젝트가 완료되면 프론트엔드 스타일 부분도 추가될 예정입니다. 위 내용에 대해 부족한 점이 있다면 조언해 주시길 바랍니다.
|