使用UrlParser.parseHash函数,我能够成功解析以下网址:
http://localhost:8000/MyRepl.elm/#home/something-else
行为符合预期,当我将其复制粘贴到浏览器中并按Enter键时-该应用会加载适当的 View 。

但是现在我想删除#,为此,我使用了UrlParser.parsePath函数。我保留了其余的代码,就像以前一样-但由于某种原因,这不起作用。

当我复制粘贴并点击回车时:
http://localhost:8000/MyRepl.elm/home/something-else-注意没有#

浏览器创建对elm -reactor localhost服务器的直接请求。

没有路由发生。 Elm react 器服务器返回404-好像没有名为/MyRepl.elm/home/something-else的文件

但是应该可以在没有#的情况下进行路由,因为http://package.elm-lang.org/packages-Docs网站是用elm编写的,并且您在网址中没有#

问题:

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

还是可以将我指向某个 repo 协议(protocol),其中不使用#的导航可以按预期工作?

最佳答案

您需要一个后端来为每个请求提供索引页面。在为索引页提供服务之后,路由将如往常一样在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'));
});

榆木 react 堆不支持这一点。

如果您使用的是webpack,则可以使用historyApiFallback属性How to tell webpack dev server to serve index.html for any route进行相同的操作

关于elm - 在Elm中如何在URL中没有#(哈希)的情况下进行路由/导航?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40832298/

10-12 22:19