forordIndtil videre har jeg lavet to eller tre projekter, herunder uddannelse, fora og CMS, og hvert projekt bruger kommentarfunktionen, så jeg vil fjerne kommentarsektionen separat og lave den til et komponentbaseret modul. Det sparer ikke kun udviklingsarbejde, men giver dig også en bedre forståelse af modulets funktioner. Da jeg i øjeblikket primært udvikler med TP-rammeværket, vil følgende eksempler blive præsenteret i syntaksen for TP-rammen. Men faktisk føler jeg personligt, at kernen i metoden er utilstrækkelig, og jeg har ikke gjort brug af associationsmodellens funktion. Det er det, jeg vil implementere i næste opdatering. Hovedsageligt vil jeg primært fortælle om de forskellige former for kommentarsystemer, jeg har været udsat for indtil nu, analysere deres respektive fordele og ulemper og give en idé om design af datatabeller og dataudtrækning, i håb om at være til gavn for dig. Hvis der er noget upassende, er alle også velkomne til at rette det.
Kommentarsystem
Der er tre hovedtyper af almindelige kommentarsystemer: bygning inden for en bygning, streaming-tilstand og citationstilstand (alle disse har jeg givet mine egne navne), og følgende fokuserer på fordele og ulemper ved disse tre og hvordan man implementerer dem.
1. Bygning-i-en-bygning-tilstand Den såkaldte bygning inden for en bygning-model betyder, at hver kommentar optager første sal, og alle svar på kommentaren vises i bygningen, såsom kommentarsystemet i Baidu Tieba og Jianshu.
Fordel:Svar på kommentarer med et fokuseret blik, der gør det nemt at forstå den samtale, de sætter i gang.
Ulemper:Når der er for meget indhold, skal det være paginering, hvilket er mere kompliceret.
Databladdesign:
- id (selvtilføjet primærnøgle)
- target_id (ID for kommentaremnet, som kan ændres til article_id, course_id osv. efter behov)
- parent_id (hovedkommentar-id)
- reply_uid (Registrer bruger-ID'et for den kommenterede, 0 når du svarer på hovedkommentaren)
- UID (bruger-ID, der har efterladt kommentaren)
- indhold (Kommentarindhold)
- Andre felter... (Tid, status osv.)
Back-end forretningslogik:
2. Flow-tilstand
Flow-tilstanden, som navnet antyder, ligner informationsflowet; uanset om det er en kommentar eller et svar, fylder hver besked et lag, såsom kommentarsystemet i laravel-China-fællesskabet.
Fordel:Logikken er enkel og nem at implementere
Ulemper:Indholdet af dialogen kan ikke præsenteres centralt, og det er ikke let at forstå dialogens indhold.
Databladdesign:
- id (selvtilføjet primærnøgle)
- target_id (ID for kommentaremnet, som kan ændres til article_id, course_id osv. efter behov)
- reply_uid (Registrer bruger-ID'et for den kommenterede, 0 når du svarer på hovedkommentaren)
- UID (bruger-ID, der har efterladt kommentaren)
- indhold (Kommentarindhold)
- Andre felter... (Tid, status osv.)
Back-end forretningslogik
3. Citationstilstand
Citationstilstand ligner streaming-tilstand, bortset fra at indholdet af svaret offentliggøres sammen med det citerede indhold.
Fordel:At forstå, hvilken kommentar svaret er rettet mod, kan hjælpe dig med at forstå, hvad samtalen handler om. Det er relativt nemt at implementere.
Ulemper:Ligesom Stream Mode repræsenterer det ikke hele samtalen i sin helhed. Ved at analysere fordele og ulemper kan man finde, at referencemønstret er et kompromis mellem bygningen inden i bygningen og flow-modet.
Databladdesign:
- id (selvtilføjet primærnøgle)
- target_id (ID for kommentaremnet, som kan ændres til article_id, course_id osv. efter behov)
- reply_id (kommentar-ID for den kommenterede, hovedkommentaren er 0)
- UID (bruger-ID, der har efterladt kommentaren)
- indhold (Kommentarindhold)
- Andre felter... (Tid, status osv.)
Back-end forretningslogik:
For at få listen over anmeldelser kan du forbinde kommentartabellen for at få brugerinformation og kommentarer, der citerer kommentarerne. Derefter laver du en simpel pagineringsproces.
Ovenstående er et foreløbigt resumé af de tre kommentartilstande, stildelen er endnu ikke blevet løst, og efter at blogprojektet er afsluttet, vil front-end stildelen også blive tilføjet. For ovenstående indhold, hvis der er nogen mangler, håber jeg, at du vil give vejledning.
|