【问题标题】:server-side react-router without being isomorphic没有同构的服务器端反应路由器
【发布时间】:2016-03-10 03:58:28
【问题描述】:

在我的网络应用程序中,我不想使用基于哈希的路由,我不想在我的 URL 中看到任何 #。我想使用 RESTful URL,例如 http://www.example.com/blog/id

react-router 可以很好的处理客户端路由,但是如果用户在浏览器地址栏敲回车或者刷新页面,请求会被发送到 web 服务器,然后 web 服务器必须理解URL 和处理路由。

Isomorphic 是解决这种情况的好方法,因为它可以在客户端和服务器端呈现任何页面。实际上,Github 上有许多 React 入门套件项目声称是同构的。

在我看来,isomorphic 看起来很漂亮,但是写代码太贵了:你需要让你的 react 组件在客户端和服务端都渲染成功,这需要开发者付出很大的努力。

所以这是我的问题,我可以让 react-router 同构,而不是整个代码吗?

【问题讨论】:

    标签: reactjs react-router


    【解决方案1】:

    是的。您可以将 react-router 用于具有 HTML5 历史的纯前端(非同构)应用程序。

    路由是客户端确定的,所以react-router会吐出预期的页面。

    但是,虽然您不需要编写任何服务器端代码,但您需要配置 Web 服务器以将您的路线指向正确的位置。这通常意味着将每个请求(或每个有效请求)指向同一个 HTML 文件或入口点。具体如何执行此操作取决于您用于服务页面的内容 - Express、Apache 等。

    我希望这是有道理的。

    【讨论】:

    • 我更喜欢RESTful URL,所以没有example.com/blog/id.html之类的HTML文件,而是example.com/blog/id。我想在客户端和快速服务器上运行react-router。但是我在 Google 上搜索的大多数文章都告诉我要制作一个同构 Web 应用,这对我来说太过分了
    • 您只需返回您的网络应用程序 html 文件。 (例如 index.html)。见github.com/rackt/react-router/blob/master/docs/guides/basics/…
    • 这正是您配置 Web 服务器以生成的内容 - 那些不错的 REST 端点。
    • @ChrisMartin 不错的链接,很有帮助
    • @DavidWalsh 感谢您的回答,我会将其标记为解决方案
    猜你喜欢
    • 2018-02-05
    • 2020-01-15
    • 2015-10-13
    • 2017-01-22
    • 2016-02-05
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多