2017-09-27 1 views
1

Nous développons SPA avec la navigation d'étiquette de hachage. Saw sur d'autres sites SPA il ya des URL de balises de hachage comme http://example.com/#!/users Notre application implémente actuellement les balises de hachage URLS sans! (bang, point d'exclamation) comme http://example.com/#/users Y a-t-il une raison d'utiliser bang mark dans l'URL? J'ai vérifié quelques questions SO, quelques documents: URL hash-bang (#!/) prefix instead of simple hash (#/) in Angular 1.6 Les gens veulent se débarrasser de point d'exclamation dans leurs SPAs.Pourquoi avons-nous besoin d'un bang mark dans les URL de navigation de hachage?

Cependant, angulaire Changelog indique qu'il est important changement d'ajouter marque bang dans les URL: https://github.com/angular/angular.js/blob/master/CHANGELOG.md#location-due-to

la documentation de Google montre également un exemple avec des points d'exclamation: https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

Ma principale question est - ce que nous besoin d'une marque d'exclamation dans l'URL de hachage? Cela a-t-il un sens?

Merci d'avance pour les réponses!

+0

Cela peut vous aider à https://stackoverflow.com/questions/46439079/is-there-a-way-using-angular-ui-router-not-show-login/ 46440162 # 46440162 – Raghav

+1

Merci, Raghav, pour votre réponse rapide. Mais ma question principale n'est pas "Comment se débarrasser de bang mark dans l'application Angular", notre SPA n'est même pas angulaire, il utilise son propre framework JS, mais "Pourquoi avons-nous besoin d'une marque d'exclamation?" Je suis curieux de savoir si nous avons vraiment besoin d'ajouter un point d'exclamation dans l'URL. Et si oui, pourquoi? –

+0

Il offre une capacité de liaison profonde pour les applications Angular .. s'il vous plaît passer par ce https://stackoverflow.com/questions/40478676/i-am-using-angular-and-my-url-always-has-a-exclamation-mark/40478862 .. – Raghav

Répondre

2

RFC 3986 indique qu'un fragment d'URL commence par un hachage. Un fragment fait généralement référence à une ancre HTML. Et HTML 4 définit que l'ID d'une ancre HTML ne doit pas contenir un bang.

Si vous voulez être sûr que vos tags ne se heurtent pas aux ancres HTML, il peut être utile de marquer les tags avec le bang.

2

Comme @ceving déjà expliqué la raison est d'éviter les collisions avec les identifiants d'élément. Si vous regardez l'exemple ci-dessous et pensez à avoir par exemple un contrôleur angulaire nommé "main", il y aurait un conflit quant à la façon dont l'URL devrait être interprétée.

Si vous cliquez sur "Goto Main", vous voyez le curseur sauter, sinon ce n'est pas le cas.

<a href="#main">Goto Main</a> 
 

 
<a href="#!main">Open Main Controller</a> 
 

 
<p id="main">I am main!</p>

+0

Merci pour votre clarification. J'aimerais pouvoir marquer plus d'une bonne réponse. Mais hélas ... La coche verte va à @ceving comme première réponse correcte. Cependant, votre ajout est très précieux aussi! –

+0

Il mérite une réponse correcte pour cela. Je considère aussi que le mien n'est qu'une addition, pas une alternative. – Toxantron