我正在使用Node、Express、EJS和MongoDB创建一个论坛。目前,我使用Node和EJS呈现论坛页面并从数据库传递数据。我使用GET和POST请求。只要我添加了评论,页面存储在数据库中,然后重定向回相同的路由。然后我能够向下滚动并看到我的评论。但是我对此并不满意,我希望评论和回复由Ajax处理,这样只要我发表评论,无需刷新,我就可以创建一个帖子请求,再次无需刷新页面,我就可以加载新的评论。关于如何实现这一点,有什么建议吗?
这个项目可以在https://github.com/Ibrahim40021974/Forum上查看。(很抱歉代码不整洁。我还在做版本控制)。欢迎所有的建议!提前感谢。
2条答案
按热度按时间fkaflof61#
你想要实现的,通常被称为单页应用程序,你不会看到页面刷新,但该页面的小组件实际上得到了新的数据更新。
我已经使用了Reactjs,Nodejs,这在Reactjs中很容易做到。如果你有兴趣,我可以分享repo。
调查了你的项目,我注意到了一些事情。
1.如果我指的是正确的一个(https://github.com/Ibrahim40021974/Forum/blob/master/views/forum.ejs#L69),那么你需要停止使用
e.preventDefault()
的默认表单提交。默认表单提交总是刷新你不想要的页面。如果没有页面刷新,就可以正常工作。
1.看看这是否有助于您了解如何进行ajax调用。https://www.thetopsites.net/article/53326172.shtml
zynd9foi2#
正如@Ajay kumar所说,最好的方法是创建一个单页应用:react/angular/vue这样框架在插入新数据时只刷新页面的一部分是非常好的。
然而,你可以不使用任何这个框架,但这将是棘手的。
您可以在ejs模板中添加javascript逻辑,当您提交评论时,该逻辑将执行以下操作:
1.发送帖子请求以提交新评论
1.帖子请求结束后,立即发送获取请求以获取与此帖子相关的评论
1.更新DOM(vanillaJs或Jquery)以显示注解列表。
第一个选择会要求你改变你的项目架构,但是会更容易管理,第二个会给你继续使用ejs的可能性,但是有点复杂。