我第一次使用AngularJS,并试图从URL中删除#。我没有使用NODE或Express。我在MAMP本地运行该站点。我使用index.html作为入口点,并有2个模板,页眉和页脚。然后,我保持了我所有的个人页面内容的泛音文件夹about.html,contact.html等我曾尝试加入如何删除#中的角?
<head>
<base href="/">
</head>
但它说没有找到URL。
我刚刚使用CDN导入Angular。
我第一次使用AngularJS,并试图从URL中删除#。我没有使用NODE或Express。我在MAMP本地运行该站点。我使用index.html作为入口点,并有2个模板,页眉和页脚。然后,我保持了我所有的个人页面内容的泛音文件夹about.html,contact.html等我曾尝试加入如何删除#中的角?
<head>
<base href="/">
</head>
但它说没有找到URL。
我刚刚使用CDN导入Angular。
这SO后提供了关于这个问题的一些非常有用的信息:AngularJS routing without the hash '#'
看来,它需要对任何非HTML5的浏览器。尽管可用,但您可以使用$locationProvider.html5Mode(true)
尝试使用HTML5方法。
如果你想使用真正的URL而不是hashbangs,那么首先使服务器返回每个url的正确内容。
即如果网页包含只是一个链接和单词“foo”和链接触发JS从而改变URL来/bar
和替换词“富”与“酒吧” 然后如果浏览器请求/bar
直接你的服务器需要发送带有“bar”字样的页面(以及你所有的JS代码)。
这意味着您需要两次编写代码(服务器端和客户端),或者需要使用同构JavaScript(并运行服务器端JavaScript解决方案)。
这是很多工作,但这是制作健壮的单页应用程序的代价。您可能想考虑不使用SPA(通过检查成本效益)。
如果你不打算让服务器的行为像这样,你仍然想要一个SPA,然后坚持使用hashbang的URL。
一旦服务器做正确的事,你只需要告诉角成使用历史API,而不是hashbangs的。
$locationProvider.html5Mode(true)
我找到了这个问题的答案,但它似乎是this issue的副本。
哈希路由是一种在没有完整HTML5支持的浏览器上实现客户端路由的方法。
如果可用,您可以使用$locationProvider.html5Mode(true)
来指示使用HTML5策略。
答案的所有功劳都应归功于用户plus-,以便他对重复问题的回答。
@LawrenceAiello出于好奇,这不是我对中间两句话做的吗?我的意思并不是消极的,我只是想知道我是否应该增加更多的细节或内容。谢谢! –
我会在哪里放置这段代码? – jfoutch
将它置于Angular的指令中。您也可以使用'it();'浏览器回退。在这里查看一些例子:https://docs.angularjs.org/guide/$location – KingCodeFish