Как реализовать переключение «страниц» на js без перегрузки?

Здравствуйте! Заголовок мог завести Вас в заблуждение. Дело в том, что я сам не знаю как правильно выразить мысль. В js я новичок. Решил создать плагин для переключения "страниц". А именно, представим, есть блок, появляющийся с эффектом ligthbox. Этот блок, предположим, состоит из трех страниц их нужно менять без перегрузки. На каждой из них есть input и кнопка "далее". На последней кнопка отправки результатов формы.
Думал над реализацией. Приходит в голову несколько вариантов. Первый - реализовать с помощью пагинации. Второй - сделать табами. Третий - реализовать переключение похожим на слайд-шоу слайдера.
Извините за столько корявое объяснение. Критикуйте, ругайте, помогите ;) Заранее благодарю за ответы.
  • Вопрос задан
  • 2642 просмотра
Решения вопроса 1
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
Ваше описание про ввод каких-то данных и кнопки "далее" наталкивает на мысль о parsley - там прям такой пример есть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ну один из самых часто используемых вариантов - это использование template'ов. Такой подход используется во многих популярных фреймворках( например в Angular js).
В чём основной смысл:
1. Есть блок, который является контейнером для темплейтом.
<div class='container'></div>
2. Есть сами темлейты, которые и представляют те самые страницы.
templates/template-1.html
<div class='template-1>
    <h3>template header</h3>
    <div class='template-body>
     template 1 body
    </div>
</div>

templates/template-1.html
<div class='template-2>
    <h3>another template header</h3>
    <div class='template-body>
     template 2 body
    </div>
</div>

3. Есть компонент-роутер, который связывает как правило текущий url и показываемый template.
var routes = [
    {
         template: 'templates/template-1.html',
         url: '/template1'
    },
    {
         template: 'templates/template-2.html',
         url: '/template2'
    }
];
function matchRoute() {
      var path = window.location.pathname;
      var matchedRoutes =  routes.filter(function(route) {
          return route.url === path;
      });
      if (matchedRoutes.length === 0) {
          console.log('No route found');
      }
      else {
             var route = matchedRoutes[0];
             // здесь мы должны загрузить template при помощи Ajax 
             // и вставить его в контейнер
      }
}

Функция matchRoute вешается на событие изменения window.location
Это самый базовый пример того, как работает роутинг для SPA. Есть много различных решений, реализующих такой подход, я лишь описал принцип. Если будут вопросы - спрашивайте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы