真实世界评分应用后端TypeScript+Hapi+Prisma+PostgreSQL
真实场景的评分应用后端,用的是挺常见的那套:TypeScript + Hapi + Prisma + PostgreSQL。嗯,说白了,就是一个给在线课程打分、记录测试成绩、管注册的系统,架构清晰,数据建模也比较讲究。
项目最核心的亮点是:它不是一个“Hello World”级别的 Demo,而是一个能跑起来、能部署、能扩展的“真东西”。数据层用了Prisma来建模,像用户、课程、考试、成绩这类表,结构都设计得挺细。通过关系还能看出谁是老师谁是学生,权限那一块也有认真做。
Hapi.js负责 API 层,路由设计得比较直观,用的人少但挺好上手。要是你之前用过 Express,再来用 Hapi,快就能明白它的套路。TypeScript用得比较规范,类型推导做得好,调试起来舒服多了。
认证和授权这块也不是糊弄事儿,整了完整的用户体系。比如,学生和老师权限不一样,老师能发测试,学生能做测试,逻辑都在中间件里得挺清楚。
部署相关的内容也有提到,不管你打算本地跑还是上到服务器上,都有现成的方案。对了,还整合了一些外部 API,像成绩发布通知啊,学分同步啥的,扩展性也还不错。
如果你想搞一个“有来有回”的项目,不只是增删查改,这个例子还蛮适合你啃一啃。顺便了解下Prisma在实际业务里到底咋用,肯定不亏。
                            
                            real-world-grading-app-master.zip
                            预估大小:33个文件
                        
                        
                        
                                
                                real-world-grading-app-master
                                文件夹
                            
                                                        
                                
                                .gitignore
                                49B
                            
                                                        
                                
                                tsconfig.json
                                229B
                            
                                                        
                                
                                README.md
                                2KB
                            
                                                        
                                
                                .github
                                文件夹
                            
                                                        
                                
                                workflows
                                文件夹
                            
                                                        
                                
                                grading-app.yaml
                                2KB
                            
                                                        
                                
                                prisma
                                文件夹
                            
                                                        
                                
                                migrations
                                文件夹
                            
                                                        
                                
                                20201214130854_init
                                文件夹
                            
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                                                        
                            
                            
                                                        
                                        
                                    文件大小:92.85KB
                                
                                
                                
                            
评论区