我有一个简单的应用程序(服务器端是Sinatra,客户端是ReactJS)。
工作流程非常基础:Sinatra处理get "/"
请求,并使用静态样式表和脚本向客户端发送index.html
。
脚本是ReactJS应用程序,它由几个组件和一个ReactRouter组成。每个React的组件都是一个独特的“页面”,根据ReactRouter有自己的路径/路径。
例如:
"/" => "index.html" (real html page with renered components
inside)
,"/form" => (ReactRouter points to component <Form/>, in fact render happens inside selector of "index.html")
,"/finish" => (ReactRouter points to component <Finish/>, in fact render happens inside selector of "index.html")
。虽然我只是在实施客户端,但它的效果非常好。但是现在,当我尝试使用Sinatra作为服务器端的东西时,这已经破了:当我想去/form
时我得到了Sinatra的默认404页面(“Sinatra不知道这个小曲。”)
我理解Sinatra(或Rack)在ReactRouter之前拦截请求的路径(/form
的{{1}})。但我无法理解如何解决它(为什么会这样,虽然路由器脚本已经在客户端上并且应该首先触发)。
感谢您的帮助。
答案 0 :(得分:1)
使用通配符路由将index.html返回到所有路由。
这样的事情:
get '/*' do
#return index.html
end