如何使用express来路由react-router应用程序?

时间:2017-12-29 05:15:43

标签: reactjs express routing

所以我在expressjs中运行了一个后端,并且我有多个路由。现在我只是按照this教程在express上设置RESTful api 。现在我想切换到前端的完全响应,这样我将在后端运行一个api来从数据库中获取内容并且正在考虑使用create Function yuri_func1 (@valDate DateTime) --Wrong parameter type RETURN VARCHAR(10) -- No proper sizing of return type AS BEGIN declare @valWeekday varCHAR(10); Set @valWeekday = DATENAME(WEEKDAY,@valDate); return @valWeekday; END GO 来获取数据。我看到很多人说这是最好的方法。但现在有一个问题,我不知道如何为此做好准备。我有fetch设置,所以我假设我会使用它。但是,如何将这些文件提供给客户端?如何确保除 react-router路由之外的每条路径仅提供我的js文件?就像我已经建立了一个包含/apiindex.html的文件夹。我正在轻松地运行它们但是如何将它们与快速集成?我无法找到任何答案。 如何使用expressjs 路由为reactjs应用程序提供服务?而且我看到一个教程告诉我使用main<hash>.js路线但这意味着即使我的api路线也只指向那个。

1 个答案:

答案 0 :(得分:1)

基本上有三种方式来呈现应用程序。 一个是服务器端渲染,另一个是客户端渲染,第三个是同构渲染。

因此,如果您在Nodejs中定义路由并通过这些路由导航应用程序,那么它将完全是服务器端渲染。

  

我看到一个教程告诉我使用*路线,但这意味着我的   api路线只会指向那个。 ?我怎样才能确定每条路线   除了/ api路由只服务我的js文件?

关于这一点,你可以做的是

server.get('/api', (req, res, next) => {
    //You can handle the request here
})  

server.get('*', (req, res, next) => {
    //You can handle the request here
})

您可以按此顺序定义路线。因此,通过这种方式拨打&#39; / api&#39;将由第一条路线处理,所有其他请求将由第二条路线处理。

  

现在我想切换到前端的完全反应,这样我就会   在后端运行一个api来从数据库中获取东西   我正在考虑使用fetch from react来获取该数据

在这里你不需要这个。它将完全是客户端渲染

    server.get('*', (req, res, next) => {
        //You can handle the request here
    })

为此,您可以从头开始创建反应应用程序或使用一些样板(https://github.com/facebookincubator/create-react-app)。

在那里你可以定义所有路由并简单地调用url http://localhost/api/xxxx并获取数据,你可以在前端使用这些数据。在这种情况下,将有一个Nodejs服务器将服务于前端和expressjs服务器将托管&#39; api&#39;服务从中获取数据。

  

我有反应路由器设置所以我假设我会使用它。但是怎么样   我可以将这些文件提供给客户端吗?`

     

如何使用expressjs路由一个reactjs应用程序?

编译时的Reactjs应用程序是静态文件的组合,主要包含html,css,javascript。如果您希望应用程序由您的express.js服务器提供服务,那么您需要使用同构渲染。它是迄今为止渲染应用程序的最佳方法,因为它有利于SEO和初始快速页面加载。它以复杂的设置为代价。在这种情况下,每当页面刷新或第一个请求到来时,express将提供第一页(index.html),index.html将包含客户端呈现所需的静态(捆绑)js和css文件。第一次渲染将由快递服务器完成,后续渲染将由浏览器本身完成。