【问题标题】:Displaying different content based on Route - Node.js/React基于 Route 显示不同的内容 - Node.js/React
【发布时间】:2017-05-08 16:29:22
【问题描述】:

我在我的 Node 应用程序中为不同的商店资料页面设置了路线。一直在谷歌搜索,我知道我可以编辑参数,但我完全不知道如何根据名称更改内容(使用 React 加载)。我只是使用 res.render() 来渲染特定页面。

例如,https://www.instagram.com/adidas 显示的内容与 https://www.instagram.com/nike 不同,但它们具有相同的 HTML 结构和基本配置文件 HTML。只是内容不一样!

现在,我只有一个 store.ejs,它是每个配置文件的 html 结构。

如何根据名称/id 更改和加载内容的示例是什么?

【问题讨论】:

  • React 可以在服务器上呈现为强或静态标记,因此您甚至可能不需要 ejs。
  • @WalkerRandolphSmith 我不需要在 express 应用中使用玉或 ejs 吗?
  • 不,你不是。
  • 您可以将facebook.github.io/react/docs/react-dom-server.html 与 express 一起使用。

标签: javascript html node.js reactjs express


【解决方案1】:

路由参数可能就是您要找的。​​p>

app.get('/:name', (request, response) => {
  let locals = {
    name: request.params.name,
    foo: 'bar'
  };

  res.render('store.ejs', locals);
});

可以在模板文件中引用局部变量。

 <h1>Hello <%= name %></h1>
 <button><%= foo %></button>

然后导航到/rohit 将呈现一个包含以下标记的页面。

 <h1>Hello rohit</h1>
 <button>bar</button>

也就是说,构建应用程序路由还有很多其他方法,因此绝对值得阅读routing docs

【讨论】:

  • 谢谢丹。我能够让那个小例子工作并浏览文档。我想知道,这在一个更大更复杂的例子中究竟是如何发挥作用的。我需要条件逻辑来读取 json 文件吗?我究竟如何处理不同的大型内容集?
  • 这真的取决于您决定使用的模板语言(例如 ejs、pug、...)。我建议找到一些快速应用程序并阅读它们的源代码,以了解管理路线/视图。
  • 还请记住,您可以根据需要定义任意数量的模板文件,并且可以根据需要使应用程序的路由变得复杂,在渲染它们时公开您想要的任何局部变量。
猜你喜欢
  • 2022-11-23
  • 2016-09-20
  • 1970-01-01
  • 2018-05-30
  • 2017-08-22
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多