Javascript 具有单页应用程序的真实URL?
我在我的一个项目中使用了react路由器,所以react是前端库,路由由react路由器管理,后端视图在django中,API在django rest中 所以我在浏览react路由器文档时发现:- 配置服务器 您的服务器必须准备好处理真实的URL。当应用程序第一次加载到/accounts时,它可能会工作,但当用户四处导航,然后点击/accounts/23刷新时,您的web服务器将收到对/accounts/23的请求。您需要它来处理该URL,并在响应中包含JavaScript应用程序**Javascript 具有单页应用程序的真实URL?,javascript,django,reactjs,Javascript,Django,Reactjs,我在我的一个项目中使用了react路由器,所以react是前端库,路由由react路由器管理,后端视图在django中,API在django rest中 所以我在浏览react路由器文档时发现:- 配置服务器 您的服务器必须准备好处理真实的URL。当应用程序第一次加载到/accounts时,它可能会工作,但当用户四处导航,然后点击/accounts/23刷新时,您的web服务器将收到对/accounts/23的请求。您需要它来处理该URL,并在响应中包含JavaScript应用程序** 我想知道
我想知道这在django视图中是如何工作的。在开发服务器上,您只需为不是以
api/
或static/
开头的所有内容设置一条路径,即可返回基本的app.html
文件。范例
class AppHTMLView(View):
def get(self, request):
fn = os.path.join(settings.BASE_DIR, "app", "app.html")
with open(fn, 'r') as fh:
return HttpResponse(fh.read())
在生产服务器上,您可以相应地配置Nginx。像这样的
...
location / {
root /var/www/example.com/static_files/;
try_files '' /app.html =404;
}
但这并不是特定的反应方式,而是所有单页应用程序的共同点。您好,这是一个相当主观的答案(这就是为什么我添加了一条评论而不是答案),但是我认为,除非您愿意咬紧牙关创建一个完整的单页应用程序,否则您不应该遵循这条道路。既然您在django中有后端视图,那么我建议您在客户端路由中使用哈希路由。我在关于redux的帖子中对此发表了相当广泛的意见:(查看我对HashHistory和BrowserHistory的评论)是的,这应该是所有单页应用程序的常见问题,我将编辑问题标题,nginx one是我认为最好的解决方案