• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何在Elm中没有#(散列)的URL中进行路由/导航?

elm 来源:AIon 7次浏览

使用UrlParser.parseHash功能我是能够成功地解析以下网址:如何在Elm中没有#(散列)的URL中进行路由/导航?

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

如所期望的行为,当我复制在浏览器中粘贴并回车 – 应用程序加载与相应的视图。

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

当我复制粘贴,然后回车:

http://localhost:8000/MyRepl.elm/home/something-else – 注意无#

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

没有路由发生。榆树反应器服务器返回404 – 因为如果没有命名/MyRepl.elm/home/something-else

但是路由不#因为http://package.elm-lang.org/packages应该是可能的文件 – 文件的网站是用榆木并且在你可以看到URL中有#

问题:

任何人都经历了同样的问题?任何想法如何解决这一问题?

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


===========解决方案如下:

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

榆树反应器不支持此功能。

如果您正在使用的WebPack你可以做的historyApiFallback属性How to tell webpack dev server to serve index.html for any route


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)