2015-10-30 2 views
1

Я использую AngularJS в первый раз и пытаюсь удалить # из URL-адресов. Я не использую NODE или Express. У меня есть сайт, работающий в MAMP локально. Я использую index.html в качестве точки входа и имеет 2 шаблона, верхний и нижний колонтитулы. Тогда я держу все мое индивидуальное содержание страницы в папке about.html партиалов contact.html и т.д. Я попытался добавитьКак удалить # в угловом?

<head> 

<base href="/"> 

</head> 

Но это говорит URL не найден.

Я просто использую CDN для импорта углового.

ответ

4

Этот SO пост содержит очень полезную информацию по этому вопросу: AngularJS routing without the hash '#'

Кажется, что это необходимо для любых браузеров без HTML5. Вы можете использовать $locationProvider.html5Mode(true), чтобы попытаться использовать метод HTML5, если он доступен.

+0

Куда я могу поместить этот код? – jfoutch

+0

Поместите его в директиву в Angular. Вы также можете использовать 'it();' для резервных копий браузера. Проверьте здесь несколько примеров: https://docs.angularjs.org/guide/$location – KingCodeFish

1

Если вы хотите использовать реальный URL вместо хешбангов, то сначала заставьте сервер вернуть правильный контент для каждого URL-адреса.

т.е. если главная страница состоит из ничего, кроме ссылки и слова «Foo» и ссылка запускает JS, который изменяет URL в /bar и заменяет слово «Foo» с «баром» затем если браузер запрашивает /bar непосредственно вашему серверу нужно отправить страницу со словом «bar» (вместе со всем вашим JS-кодом).

Это означает, что вам нужно либо написать код дважды (на стороне сервера и на стороне клиента), либо вам нужно использовать изоморфный JavaScript (и запустить решение на стороне сервера JavaScript).

Это очень много работы, но это цена создания надежного одностраничного приложения. Возможно, вы захотите рассмотреть возможность использования SPA (путем проверки стоимости-выгоды).

Если вы не собираетесь, чтобы сервер так себя вел, и вы все еще нуждаетесь в SPA, тогда придерживайтесь использования URL-адресов hashbang.


После того как сервер делает правильно, вы просто должны сказать Угловая использовать History API вместо hashbangs.

$locationProvider.html5Mode(true) 
+0

Ну, я перепроектирую веб-сайт и мне нужно сохранить URL-адреса.Это простой веб-сайт и не нуждается в базе данных или бэкэнд, но мне не нравится, что нужно многократно повторять код на каждой странице, поэтому я подумал, что это будет хорошая возможность опробовать Angular для использования партитур и шаблонов. Есть ли другой способ сделать это? Я новичок во всем этом. – jfoutch

+1

Используйте язык CMS/язык на стороне сервера. – Quentin

+0

CMS казался излишним для этого проекта, поэтому я пытался сделать все это на стороне клиента. Будет ли другая система JS делать это лучше. Спасибо – jfoutch

1

Я нашел ответ на этот вопрос, но это, кажется, дубликат this issue.

Хэш-маршрут - это метод реализации клиентской стороны маршрутизации в браузерах, которые не имеют полной поддержки HTML5.

Вы можете использовать $locationProvider.html5Mode(true), чтобы указать угловую стратегию HTML5, если таковая имеется.

Все ответы на вопросы должны быть отправлены пользователю, plus- за его ответ на дублирующий вопрос.

+0

@LawrenceAiello Просто из любопытства, разве это не то, что я сделал со средними двумя предложениями? Я не имею в виду, что отрицательно, я просто хочу знать, должен ли я добавлять больше деталей или что. Благодаря! –

Смежные вопросы