предисловиеПока что я сделал два-три проекта, включая образование, форумы и CMS, и каждый проект использует функцию комментариев, поэтому я хочу отдельно убрать раздел комментариев и сделать его компонентным модулем. Это не только экономит разработку, но и позволяет лучше понять функции этого модуля. Поскольку сейчас я в основном разрабатываю с использованием фреймворка TP, в синтаксисе фреймворка TP будут представлены следующие примеры. Но на самом деле я лично считаю, что основная часть метода недостаточна, и я не использовал функцию модели ассоциаций. Вот что я реализую в следующем обновлении. В основной части я расскажу вам о различных системах комментариев, с которыми я столкнулся, проанализирую их преимущества и недостатки, а также дам представление о проектировании таблиц данных и извлечении данных, надеясь быть для вас полезным. Если есть что-то неуместное, все могут это исправить.
Система комментариев
Существует три основных типа распространённых систем комментариев: строительство внутри здания, режим стриминга и режим цитирования (все они я назвал своими именами), и ниже рассматриваются преимущества и недостатки этих трёх и способы их реализации.
1. Режим здания в здании Так называемое здание внутри модели означает, что каждый комментарий занимает первый этаж, и все ответы на комментарий отображаются в здании, например, система комментариев Baidu Tieba и Jianshu.
Преимущество:Отвечайте на комментарии с фокусным взглядом, который облегчает понимание их разговора.
Недостатки:Когда контента слишком много, нужна пагинация, что сложнее.
Дизайн технических характеристик:
- id (самодобавленный первичный ключ)
- target_id (ID темы комментария, который можно изменять на article_id, course_id и т.д. по необходимости)
- parent_id (ID главного комментария)
- reply_uid (Запишите идентификатор пользователя комментируемого — 0 при ответе на основной комментарий)
- UID (User ID, оставивший комментарий)
- Контент (Комментарий)
- Другие области... (Время, статус и т.д.)
Бизнес-логика бэк-энда:
2. Режим потока
Режим потока, как следует из названия, похож на поток информации — будь то комментарий или ответ, каждое сообщение занимает определённый слой, например, система комментариев сообщества laravel-China.
Преимущество:Логика простая и простая в реализации
Недостатки:Содержание диалога нельзя представить центрально, и понять его содержание непросто.
Дизайн технических характеристик:
- id (самодобавленный первичный ключ)
- target_id (ID темы комментария, который можно изменять на article_id, course_id и т.д. по необходимости)
- reply_uid (Запишите идентификатор пользователя комментируемого — 0 при ответе на основной комментарий)
- UID (User ID, оставивший комментарий)
- Контент (Комментарий)
- Другие области... (Время, статус и т.д.)
Бизнес-логика на бэкенде
3. Режим цитирования
Режим цитирования похож на стриминговый режим, за исключением того, что содержание ответа публикуется вместе с цитируемым содержанием.
Преимущество:Понимание, на какой комментарий адресован ответ, может помочь вам понять, о чём разговор. Реализация относительно простая.
Недостатки:Подобно режиму потока, он не представляет всю беседу целиком. Анализируя преимущества и недостатки, можно выяснить, что эталонный паттерн является компромиссом между зданием внутри здания и режимом потока.
Дизайн технических характеристик:
- id (самодобавленный первичный ключ)
- target_id (ID темы комментария, который можно изменять на article_id, course_id и т.д. по необходимости)
- reply_id (ID комментария у комментируемого, основной комментарий — 0)
- UID (User ID, оставивший комментарий)
- Контент (Комментарий)
- Другие области... (Время, статус и т.д.)
Бизнес-логика бэк-энда:
Чтобы получить список отзывов, вы можете подключить таблицу комментариев, чтобы получить информацию о пользователях и комментарии, которые цитируют комментарии. Затем выполните простой процесс пагинации.
Выше приведено предварительное резюме трёх режимов комментариев, стиль ещё не проработан, а после завершения блога будет добавлен и фронтенд-стиль. Если есть какие-либо недостатки, если вы дадите советы.
|