如何在没有URL中的#(哈希)的情况下在Elm中进行路由/导航?

AIo*_*Ion 12 elm

使用该UrlParser.parseHash功能,我能够成功解析以下网址:

http://localhost:8000/MyRepl.elm/#home/something-else

行为是预期的,当我复制粘贴在浏览器中并点击回车 - 应用程序加载适当的视图.

但现在我想删除#和我使用的UrlParser.parsePath功能.我完全像以前一样保留了其余代码 - 但由于某种原因,这不起作用.

当我复制粘贴这个并点击回车:

http://localhost:8000/MyRepl.elm/home/something-else- 通知没有#.

浏览器向elm -reactor localhost服务器创建直接请求.

没有路由发生.elm reactor服务器返回404 - 就好像没有命名文件一样/MyRepl.elm/home/something-else

但是#应该没有路由,因为http://package.elm-lang.org/packages- Docs站点是用elm编写的,#你可以看到url中没有.

问题:

任何人都遇到过同样的问题?任何想法如何解决这一问题?

或者你能指点我的导航没有#按预期工作吗?

Seb*_*ian 8

您需要一个为每个请求提供索引页面服务的后端.在提供索引页面之后,路由将像往常一样在Elm中发生.

例如,在表达中,它看起来像:

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'));
});
Run Code Online (Sandbox Code Playgroud)

榆树反应堆不支持这一点.

如果您正在使用webpack,则可以使用historyApiFallback属性如何告诉webpack dev服务器为任何路由提供index.html