Как сохранить текущую сессию html с помощю js?

Возникла проблема. Я делаю приложение quiz builder app. Есть главная страница. Есть страница для создания квизов. Пользователь может создавать собственный квиз, заполняя поля, а потом отображать его у себя на экране. Есть кнопка save. Я бы хотел что бы при нажатии кнопки save, квиз, который создал пользователь, сохранялся. Затем на главной странице создавалась ссылка на этот квиз. С текущими данными и скриптами. Я новичок в веб разработке, поэтому с такой проблемой еще не сталкивался. Кто понял, о чем я говорю, подскажите что можно сделать. Я прочитал про local storage, но не смог никак применить в своем проекте.


Ответы (1 шт):

Автор решения: Максим Вишневский

Если вы хотите сделать это только на фронте, то это будет динамический роутинг средствами js, такими как например vue-router. Так же вам будет необходимо сохранять состояние заполненных полей в localStorage. То есть предположим у нас есть управление роутингом с клиента, вы нажатию кнопки save делаете следующее (мы просто сохраняем заполненную форму с ключом роутинга):

const onSave => (guid, form) => window.localStorage.setItem(guid, JSON.stringify(form));

Аргумент guid, это генерируемое значение, например следующей функцией:

const genGUID = () => {
  const s4 = () => Math
    .floor((1 + Math.random()) * 0x10000)
    .toString(16)
    .substring(1);

  return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4();
};

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

const onRouteParamChange = (guid) => JSON.parse(window.localStorage.getItem(guid) || '{}');

Но такой подход не то чтобы хорошая идея, потому что лучше такие данные сохранять в базу данных и затем получать эти данные при помощи сетевых запросов, в случае с SPA такой подход называется REST. Реализация простого круда выходит за рамки ответа на вопрос.

→ Ссылка