使用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/