使用UrlParser。parseHash
函数我能够成功解析以下url:
http://localhost:8000/MyRepl.elm/#home/something-其他
当我在浏览器中复制粘贴并按enter键时,该行为与预期一样-应用程序将加载相应的视图。
但是现在我想删除#
,为此我使用了UrlParser。解析路径
函数。我保留了代码的其余部分,与以前完全一样——但由于某种原因,这不起作用。
复制粘贴此内容并按enter键时:
http://localhost:8000/MyRepl.elm/home/something-else
-注意没有#
。
浏览器直接创建对elm反应器localhost服务器的请求。
没有路由发生。elm reactor服务器返回一个404-就好像没有名为/MyRepl的文件一样。elm/家/其他东西
但是没有#
的路由应该是可能的,因为http://package.elm-lang.org/packages
-Docs站点是用elm编写的,正如你所看到的,在url中没有#
。
问题:
有人经历过同样的问题吗?有没有办法解决这个问题?
或者你能给我指出一个回购协议,在那里不使用#
的导航可以正常工作?
您需要一个后端服务器,为每个请求提供索引页。在提供索引页之后,路由将在Elm中照常进行。
例如,在express中,它看起来像:
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'public/index.html'));
});
router.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, 'public/index.html'));
});
榆树Reactor不支持这一点。
如果您正在使用webpack,您可以使用历史ApiFallback
属性做同样的事情如何告诉webpack开发服务器为任何路由提供index.html