Лучшая практика для передачи переменных между веб-страницами с KnockoutJS / Jquery - PullRequest
0 голосов
/ 12 июля 2011

Я пишу простое веб-приложение в knockoutJS с Jquery.Если вы представите, что он будет состоять из 3 основных страниц (их намного больше, но давайте сделаем это проще):

  • Страница входа
  • Страница клиента
  • ПредыдущаяСтраница заказов

Каждая страница содержит различные включения JavaScript и разные стили CSS.Первоначально я использовал ASP MVC для этого, и маршруты будут выглядеть так:

  • / login
  • / customer / {customerId}
  • / customer / {customerId}/ Orders /

Теперь, когда я просто использую KnockoutJS, страницы на самом деле:

  • login.html
  • customer-homepage.html
  • customer-orders.html

Теперь суть проблемы при входе в систему.Я связываюсь с веб-сервисом (старый материал asp mvc, представленный как JSON), а затем хочу перенаправить пользователя на страницу клиента, но хочу, чтобы он знал о customerId.

Итак, когда AJAX запрашивает логинвозвращается с действительным идентификатором пользователя, мне нужно было бы как-то перенаправить на следующую страницу, с переменной.Я думал так:

location.href = "customer-homepage.html?customerId=1";

Однако это выглядит немного грязно, и я не знаю, подходит ли такой подход для целей SEO, так как большая часть SEO сосредоточена на URL, поэтомув идеале должен выглядеть как маршрут asp mvc.

Это заставило меня задуматься о том, возможно ли сделать это как одностраничное приложение, но с использованием hashbang для перенаправления, так как я хотел бы иметь возможность перемещаться между страницами, а несделать полный пост обратно.Однако мне нужно было бы выгрузить часть JS / CSS из памяти и затем загрузить более новые вещи.

Я знаю, что это довольно странный вопрос, но из того, что я вижу, мои варианты:

  • Использовать запросы на перенаправление с данными строки запроса
  • Использовать одностраничное приложение, которое было бы БОЛЬШИМ, но должно было бы решить проблему выгрузки существующих ресурсов (JS / CSS) в память

1 Ответ

0 голосов
/ 13 июля 2011

Я создаю похожее веб-приложение, и лично я считаю, что было бы неплохо разделить логику приложения, если у вас еще есть три страницы.Все, что делает нокаут, в основном делает ваш взгляд (html) намного тупее (как рекомендует MVVM).И позволяет вашему взгляду взять на себя взаимодействие с пользователем.

Но ваше предложение похоже на то, чтобы иметь одно представление с разными моделями представления, что не запрещено, но я думаю, что будет сложнее отлаживать такиеприложение.

Чтобы передать информацию на другую страницу, просто сделайте POST с customerId, и тогда ваша логика на стороне сервера сможет использовать эту информацию, чтобы сделать все, что требуется от приложения.

Я лично думаю, что это решит все твои проблемы, но опять же, это может быть не ответ, а мнение, ты решаешь:)

...