Javascript 如何在膝关节炎反应路由器中使用浏览器历史
在express中,我们可以使用以下代码来处理请求。当路由器未处理请求时,服务器端将发送index.htmlJavascript 如何在膝关节炎反应路由器中使用浏览器历史,javascript,node.js,reactjs,react-router,koa,Javascript,Node.js,Reactjs,React Router,Koa,在express中,我们可以使用以下代码来处理请求。当路由器未处理请求时,服务器端将发送index.html app.get('*', function (request, response){ response.sendFile(path.resolve(__dirname, '../public', 'index.html')) }) 但是在膝关节炎中,下面的代码不起作用。当请求没有被koa路由器处理时,它将返回404而不是index.html var send = require('
app.get('*', function (request, response){
response.sendFile(path.resolve(__dirname, '../public', 'index.html'))
})
<>但是在膝关节炎中,下面的代码不起作用。当请求没有被koa路由器处理时,它将返回404而不是index.html
var send = require('koa-send')
var serve = require('koa-static')
var router = require('koa-router')
var koa = require('koa')
var app = koa();
app.use(serve(__dirname+'/../public'));
app.use(function *(){
yield send(this, path.join(__dirname, '/../public/','index.html' )); })
app.use(router.routes())
下面的代码也不起作用
router
.get('*', function* () {
yield send(this, __dirname +'/../public/index.html')
})
基本上,您要实现的是服务器渲染。 您需要使用match&RouterContext编写路由配置<代码>反应路由器对此有详细的文档
在膝关节炎的情况下,大致可以这样做。
import router from 'koa-router'
import { match, RouterContext } from 'react-router'
const koaRouter = router()
const otherRouter = () => {
return new Promise((resolve, reject) => {
match({ routes, location }, (error, redirectLocation, renderProps) => {
...
..
.
}
}
koaRouter
.use(otherRouter)
我在网上找到了几份似乎相当不错的回购协议。不过我还没有证实
这对我很有效你能定义“不起作用”吗?它会抛出错误吗?它没用吗?它会返回里克·阿斯特利的照片吗?@ivarni很抱歉没有清晰的信息。我刚刚更新了这个问题,听起来更像是他们试图实现的是使用HTML5历史API,它根本不需要您呈现服务器端。但要使用页面刷新,每个URL都需要返回相同的
index.html
文件。工作express
示例清楚地表明了这一点。
router.get('*', async function(ctx, next) {
var html = fs.readFileSync(path.resolve('./build/index.html'));
ctx.type = 'html';
ctx.body = html;
})