2015-01-23 4 views
0

Недавно я начал использовать реакцию и веб-пакет, и в то время как он хорош во многих отношениях, но при тестировании приложение отображается в iframe, что мешает мне напрямую загружать маршруты без полномочий root. Поэтому, если я хочу протестировать http://localhost:8000/#/signin, я не могу загрузить этот url, но вместо этого мне нужно загрузить базовый url и щелкнуть ссылку в нем, которая указывает на страницу с подписью (или, по крайней мере, это единственный способ, которым я нашел, что работает).Загружать маршруты непосредственно при использовании webpack

Есть ли лучший способ сделать это?

Адрес similar question с довольно взломанным решением. С того времени что-то изменилось?

+0

'#/signin' * - это корень маршрута. Хеш и все, что после него не отправляется на сервер. URL-адрес, который вы вставили, рассматривается как «http: // localhost: 8000 /» на ваш сервер. –

+0

Да, я понимаю, что, но React должен обнаруживать хеш #/signin и отображать соответствующий маршрут, содержащий компонент signin (как и при использовании webpack). – chris

+0

Реакт не предлагает маршрутизации. Используете ли вы что-то вроде [response-router] (https://github.com/rackt/react-router)? –

ответ

0

Вы имеете в виду, что это работает: localhost: 8000/webpack-dev-server /?

Следующая должен работать тоже:

  • локальный: 8000/WebPack-DEV-сервер/index.html
  • локальный: 8000/WebPack-DEV-сервер/index.html/#/
  • для входа в аккаунт

Они должны работать без фрейма:

  • локальный: 8000/index.html/#/
  • входа в аккаунт
  • локальный: 8000/#/
  • зарегистрировались

Если это не работает, почему вы не правой кнопкой мыши по ссылке, которая указывает на страницу входа, скопируйте адрес ссылки и вставьте его в браузер?

+0

Вы правы, что URL-адреса могут быть загружены. Может быть, это хромовая вещь, но если я вручную изменю url и нажмите enter, это не изменится, но если я тогда cmd-r, он будет загружать маршрут. Тем не менее, проблема по-прежнему сохраняется, когда я нажимаю ссылку, например «localhost: 8000/#/foo», URL-адрес браузера не изменяется. Это затрудняет разработку, позволяя мне вручную установить URL-адрес браузера. Использование webpack помогает предотвратить много переполнений страниц, но не все из них. Является ли проблема, что ссылки не содержат пути webpack-dev-server? Мои ссылки создаются с помощью компонента Link-маршрутизатора. – chris

+0

Что касается второго набора ссылок, которые вы опубликовали, они действительно работают, но использование их исключает все преимущества webpack (без перезагрузки файлов aync). Что касается копирования ссылки и вставки ее в браузер, я не говорю, что ничего не работает, я говорю, что производительность нарушается, когда вам приходится постоянно перезагружаться. – chris

+0

Я не думаю, что можно сделать то, что вы хотите из коробки. Когда ваше приложение запущено внутри iframe, оно не будет обновлять URL-адрес браузера или историю.Я не понимаю, почему вам нужно, чтобы webpack выполнял асинхронную перезагрузку при тестировании вашего приложения. Я ожидал бы, что асинхронная перезагрузка полезна только во время разработки. –

0

Похоже, что решение этого - загрузить URL-адрес, содержащий путь к веб-папке и хэш, который вы тестируете ex. http://localhost:8000/webpack-dev-server/#dashboard. Это нужно сделать вручную, так как любые ссылки в приложении не будут содержать путь webpack-dev-server.

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

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