förordHittills har jag gjort två eller tre projekt, inklusive utbildning, forum och CMS, och varje projekt använder kommentarsfunktionen, så jag vill ta bort kommentarssektionen separat och göra den till en komponentiserad modul. Det sparar inte bara utvecklingsarbete, utan ger dig också en bättre förståelse för modulens funktioner. Eftersom jag för närvarande främst utvecklar med TP-ramverket kommer följande exempel att presenteras i syntaxen för TP-ramverket. Men i själva verket känner jag personligen att kärnmetoden är otillräcklig, och jag har inte använt associationsmodellens funktion. Detta är vad jag kommer att implementera i nästa uppdatering. I huvudsak kommer jag främst att berätta om de olika former av kommentarssystem jag har exponerats för hittills, analysera deras respektive för- och nackdelar samt ge en uppfattning om design och datautvinning, i hopp om att vara till hjälp för dig. Om det är något olämpligt är alla också välkomna att rätta till det.
Kommentarssystem
Det finns tre huvudtyper av vanliga kommentarssystem: byggnad inom byggnad, strömningsläge och citeringsläge (alla med egna namn), och följande fokuserar på för- och nackdelar med dessa tre och hur man implementerar dem.
1. Bygg-i-en-byggnad-läge Den så kallade byggnaden inom en byggnad-modell innebär att varje kommentar upptar första våningen, och alla svar på kommentaren visas i byggnaden, såsom kommentarssystemet i Baidu Tieba och Jianshu.
Fördel:Svara på kommentarer med ett fokuserat perspektiv som gör det lätt att förstå den konversation de startar.
Nackdelar:När det är för mycket innehåll måste det vara paginering, vilket är mer komplicerat.
Databladsdesign:
- id (självtillagd primärnyckel)
- target_id (ID för kommentarsämnet, som kan ändras till article_id, course_id etc. vid behov)
- parent_id (huvudkommentar-id)
- reply_uid (Registrera användar-ID:t för den kommenterade, 0 när du svarar på huvudkommentaren)
- UID (Användar-ID som lämnade kommentaren)
- innehåll (Kommentarsinnehåll)
- Andra områden... (Tid, status, etc.)
Backend-affärslogik:
2. Flödesläge
Flödesläget, som namnet antyder, liknar informationsflödet, oavsett om det är en kommentar eller ett svar, varje meddelande har ett lager, såsom kommentarssystemet i laravel-China-gemenskapen.
Fördel:Logiken är enkel och lätt att implementera
Nackdelar:Innehållet i dialogen kan inte presenteras centralt, och det är inte lätt att förstå dialogens innehåll.
Databladsdesign:
- id (självtillagd primärnyckel)
- target_id (ID för kommentarsämnet, som kan ändras till article_id, course_id etc. vid behov)
- reply_uid (Registrera användar-ID:t för den kommenterade, 0 när du svarar på huvudkommentaren)
- UID (Användar-ID som lämnade kommentaren)
- innehåll (Kommentarsinnehåll)
- Andra områden... (Tid, status, etc.)
Backend-affärslogik
3. Källhänvisningsläge
Citeringsläget liknar streamingläget, förutom att innehållet i svaret publiceras tillsammans med det citerade innehållet.
Fördel:Att förstå vilken kommentar svaret är riktat till kan hjälpa dig att förstå vad samtalet handlar om. Det är relativt enkelt att implementera.
Nackdelar:Precis som Stream Mode representerar det inte hela samtalet. Genom att analysera för- och nackdelar kan man finna att referensmönstret är en kompromiss mellan byggnaden inom byggnaden och flödesläget.
Databladsdesign:
- id (självtillagd primärnyckel)
- target_id (ID för kommentarsämnet, som kan ändras till article_id, course_id etc. vid behov)
- reply_id (kommentar-ID för den kommenterade personen, huvudkommentaren är 0)
- UID (Användar-ID som lämnade kommentaren)
- innehåll (Kommentarsinnehåll)
- Andra områden... (Tid, status, etc.)
Backend-affärslogik:
För att få listan över recensioner kan du koppla kommentarstabellen för att få användarinformation och kommentarer som citerar kommentarerna. Gör sedan en enkel pagineringsprocess.
Ovan är en preliminär sammanfattning av de tre kommentarslägena, stildelen har ännu inte lösts, och efter att bloggprojektet är slutfört kommer även front-end-stildelen att läggas till. När det gäller ovanstående innehåll, om det finns några brister, hoppas jag att du kan ge vägledning.
|