Reactjs 多页使用继电器现代同构

Reactjs 多页使用继电器现代同构,reactjs,graphql,react-relay,isomorphic-relay,Reactjs,Graphql,React Relay,Isomorphic Relay,我遵循了这个继电器现代同构示例教程: 在该教程中,他们有一个没有路由的页面 从“快递”进口快递; 从“express graphql”导入graphQLHTTP; 从“Nunjuck”进口Nunjuck; 从“路径”导入路径; 从“网页包”导入网页包; 从“网页包开发服务器”导入网页包开发服务器; 从“./data/schema”导入{schema}; 从“/js/renderServer”导入renderServer; 从“/js/renderServer2”导入renderServer2;

我遵循了这个继电器现代同构示例教程:

在该教程中,他们有一个没有路由的页面

从“快递”进口快递; 从“express graphql”导入graphQLHTTP; 从“Nunjuck”进口Nunjuck; 从“路径”导入路径; 从“网页包”导入网页包; 从“网页包开发服务器”导入网页包开发服务器; 从“./data/schema”导入{schema}; 从“/js/renderServer”导入renderServer; 从“/js/renderServer2”导入renderServer2; const APP_PORT=3000; 常量图ql_端口=8080; //公开GraphQL端点 const graphQLServer=express; graphQLServer.use'/',graphQLHTTP{schema,pretty:true}; graphQLServer.listenGRAPHQL_端口=>console.log `GraphQL服务器现在正在上运行http://localhost:${GRAPHQL_PORT}` ; //服务于中继应用程序 const compiler=webpack{ 条目:path.resolve\uuu dirname、'js'、'app.js', 模块:{ 装载机:[ { 排除:/node_模块/, 加载器:“巴贝尔”, 测试:/\.js$/,, }, ], }, 输出:{filename:'app.js',路径:'/'}, devtool:“源映射” }; const app=新的WebpackDevServercompiler{ contentBase:“/public/”, 代理:{'/graphql':`http://localhost:${GRAPHQL_PORT}`}, publicPath:“/js/”, 统计信息:{colors:true}, }; 配置“视图”{autoescape:true}; //提供静态资源 app.use'/public',express.staticpath.resolve__dirname',public'; 应用程序。使用“/”,renderServer; 使用'/detailComponent',renderServer2; app.listenAPP\u端口,=>{ console.log`应用程序现在正在上运行http://localhost:${APP_PORT}`;
}; 您需要交换这两条路线的顺序

当您调用app.use时,您正在创建中间件,其行为与get或post等方法函数不同。关于更多细节,下面是实际发生的情况:对于中间件而不是get,post等,将匹配每个路由,并且因为中间件在代码中的/detailComponent之前定义,所以即使路由是/detailComponent,它也会触发

这就是说,如果您正在实现SSR并实现多个路由,那么您可能应该考虑将所有内容路由到express中的一个端点,并让React Router这样的库处理其余部分。有很多教程展示了如何做到这一点