React 和 Express 中的路由有什么区别
What is the difference between Routing in React and Express
我无法理解前端和后端路由之间的区别。
我的基本理解是 React-router 会将组件映射到 URL,例如:
<Router>
<div>
<Header />
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/topics" component={Topics} />
</div>
</Router>
并且 Express-router 会将 html 页面映射到特定路由
// GET method route
app.get('/', function (req, res) {
res.render('index.html')
})
// POST method route
app.post('/', function (req, res) {
res.redirect('/')
})
我一直认为前端负责创建视图,后端会将这些视图映射到路由。意思是访问一条路线会呈现相关的模板。
我无法理解在使用 React-route 和 Express-router 时这会发生怎样的变化。
嗯,确实是有区别的。当您使用 react-router 时,您使用 Router 和 Link 组件来呈现 about 组件,它将向您发送 关于页面 link.
<Link to='/about'>About</Link>
< Route path="/about" component={About} />
在 express 中有点相同,如果你渲染这样的视图:
app.get('/about', function (req, res) {
res.render('about.html')
})
让我们看看,您希望您的数据库数据在前端。如果你使用像 ejs 这样的普通视图引擎,
handlebars 然后在从数据库中找到数据后将它们呈现到 html 或 ejs 页面。
如果您正在为单页应用程序使用 React,那么您不需要 React-router。但是如果你的应用有多个页面,那么使用 react-router 是好的。
参见下面的示例代码:
app.get('/about', function(req, res) {
// finding the user details from database
user.find()(function(err, users) {
if (err) {
console.log(err);
} else {
res.json(users); //sends the user data
}
});
而现在,React 必须从后端获取这些数据,它可以通过多种方法完成,我更喜欢使用 axios 包,它是一个 npm 做同样的工作正如 FETCH API 所做的那样。
axios.get('http://localhost:5000/about')
.then(response => {
this.setState({users: response.data}); //this reponse.data is coming from backend
})
.catch(function (error) {
console.log(error);
})
所以现在,您看到 react-router-dom 与快速路由不同。
< Route path="/about" component={About} />
,你可以给这个地址
任何你喜欢的东西,即 "/details"
等。你只需要提供 axios.get(endpoint)
地址,就像 express 端点一样。但是你必须使用 Link
从 react-router-dom 去到快速路由的确切端点路径。
<Link to='/about'>About</Link>
应与 app.get('/about',.....)
相同
希望这能解决您关于理解 react-router 和快速路由的问题。
我无法理解前端和后端路由之间的区别。
我的基本理解是 React-router 会将组件映射到 URL,例如:
<Router>
<div>
<Header />
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/topics" component={Topics} />
</div>
</Router>
并且 Express-router 会将 html 页面映射到特定路由
// GET method route
app.get('/', function (req, res) {
res.render('index.html')
})
// POST method route
app.post('/', function (req, res) {
res.redirect('/')
})
我一直认为前端负责创建视图,后端会将这些视图映射到路由。意思是访问一条路线会呈现相关的模板。
我无法理解在使用 React-route 和 Express-router 时这会发生怎样的变化。
嗯,确实是有区别的。当您使用 react-router 时,您使用 Router 和 Link 组件来呈现 about 组件,它将向您发送 关于页面 link.
<Link to='/about'>About</Link>
< Route path="/about" component={About} />
在 express 中有点相同,如果你渲染这样的视图:
app.get('/about', function (req, res) {
res.render('about.html')
})
让我们看看,您希望您的数据库数据在前端。如果你使用像 ejs 这样的普通视图引擎, handlebars 然后在从数据库中找到数据后将它们呈现到 html 或 ejs 页面。
如果您正在为单页应用程序使用 React,那么您不需要 React-router。但是如果你的应用有多个页面,那么使用 react-router 是好的。
参见下面的示例代码:
app.get('/about', function(req, res) {
// finding the user details from database
user.find()(function(err, users) {
if (err) {
console.log(err);
} else {
res.json(users); //sends the user data
}
});
而现在,React 必须从后端获取这些数据,它可以通过多种方法完成,我更喜欢使用 axios 包,它是一个 npm 做同样的工作正如 FETCH API 所做的那样。
axios.get('http://localhost:5000/about')
.then(response => {
this.setState({users: response.data}); //this reponse.data is coming from backend
})
.catch(function (error) {
console.log(error);
})
所以现在,您看到 react-router-dom 与快速路由不同。
< Route path="/about" component={About} />
,你可以给这个地址
任何你喜欢的东西,即 "/details"
等。你只需要提供 axios.get(endpoint)
地址,就像 express 端点一样。但是你必须使用 Link
从 react-router-dom 去到快速路由的确切端点路径。
<Link to='/about'>About</Link>
应与 app.get('/about',.....)
希望这能解决您关于理解 react-router 和快速路由的问题。