【发布时间】:2019-10-01 09:38:51
【问题描述】:
我为我的 React 应用程序定义了一个特定的路由。我想在我的 server.js 中检查它,因为我需要执行一个特定的调用,但由于某种原因我不能使用 AJAX 调用。
路线是这样的:some-slug/asset/some-more-sluggish-matter/
/asset/ 将保持不变。这是我尝试过的:
app.get('/(.* )?(\/asset\/)(.* )?', function (req, res) {
console.log('Route found');
});
不起作用。如果我删除引号,则会引发正则表达式未终止的错误。
【问题讨论】:
-
您似乎将快速路由与反应路由混淆了。
<Route path="/asset" component={AssetPage} />如果浏览器中的 url 匹配“/asset”,则简单地告诉 React 渲染该特定组件。您上面给出的代码是 expressJS 代码,它表示如果传入的 GET 请求的 URL 与此匹配,则运行此代码。你能详细说明你到底想要完成什么吗? -
谢谢@ManavM,两端的路由我都清楚了,我只是想匹配根url后面的片段来进行服务器端API调用。
-
我明白了...您定义上述路径的方式的问题在于您已将其定义为正则表达式,但使用单引号而不是正斜杠,因此 express 将其作为字符串读取。 .您还应该转义每个正斜杠(您的第一个斜杠没有转义)...如果您想使用正则表达式,那么您的路径应该定义为
/\/(.* )?(\/asset\/)(.* )?/。 -
添加一个不同的正则表达式作为答案,因为我认为这是一个更准确的正则表达式
标签: node.js regex reactjs express routing