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

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

以上是 如何在Elm中没有#(散列)的URL中进行路由/导航? 的全部内容, 来源链接: utcz.com/qa/260514.html

回到顶部