Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

[HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?

Сразу суть вопроса: Разве не может .js просто записывать ключи и значения в некий локальный файл в той же директории, а при необходимости доставать их оттуда?
Дальше пояснения:
Решил сделать оффлайн-сайт для своих нужд (это скорее интерфейс для работы с личными данными), поизучал html, css и js, и написал сайт, имеющий: некий текст, изменяемый с помощью поля input; блоки-ссылки, добавляемые/удаляемые соответствующими кнопками; блок с картинкой, которую я выбираю со своего компьютера также по кнопке, в общем, функционал разнообразный.
Проблема очевидна - все изменения сбрасываются при перезагрузке страницы. Вот я и стал искать способ держать изменяемые параметры у себя же на компьютере, чтобы .js мог перезаписывать и брать их оттуда когда угодно.
Я наткнулся на способ с браузерным хранилищем localstorage, но у меня есть сомнения на его счёт, ведь судя по описанию, данные хранятся в самом браузере, но что если я захочу сменить браузер или перенести папку с файлами сайта на другой компьютер? Или с браузером/пк что-то случится и от сайта останется лишь hdd с основными файлами? Останутся ли данные со мной?
Уже собрался изучать серверный язык, PHP или Node.js, но они требуют настоящего запуска сервера, с ip и отслеживанием портов. Ну или я что-то неправильно понял / не нашёл, ведь упоминание портов и соединения с сервером отвело меня от дальнейшего изучения, поправьте, если не прав.
В общем, есть ли простой способ это сделать? Учитывая то, что сайт всегда будет локальным.
Быть может, я зря грешу на localstorage и он будет сохранять данные физически на компьютере (и я смогу делать с ними что угодно, в том числе открывать в другом браузере).
Или в серверных языках есть такая возможность? Тогда посоветуйте язык для изучения.
Вот бы просто открывать сайт через index.html в любых условиях и всё работало

По дате
По рейтингу
Аватар пользователя
Новичок

У js нет доступа ни к чему, кроме самого браузера. Вот и делай выводы

Аватар пользователя
Гений

JS в браузере может работать с файлами только по указанию пользователя. Это выглядит так же как загрузка файла на сервер через веб или скачивание файла.
Любой другой язык не имеет таких ограничений. И JS не имеет таких ограничений, когда работает не в браузере.
Есть технология создания графического интерфейса: в приложение встроен браузер. Графический интерфейс работает в этом встроенном браузере таким же образом как в веб, но программный код может быть написан на разных языках и не имеет ограничений. Точнее, там так. Есть JS, который как обычно работает в браузере с ограничениями. Но этот JS может вызывать функции из главного кода приложения, поэтому все ограничения можно обойти.

Аватар пользователя
Гуру

Есть вариант использовать AJAX+JSON+PHP. Например, есть кнопка "Сохранить". Жмем её. Отправляем данные через AJAX в формате JSON посредством POST запроса на JS. Далее на PHP перезаписываем данные в нужном файле. А при загрузке страницы читаем этот файл и берем оттуда данные. Файл можно даже сделать с расширением *.json. Пример POST на чистом JS на всякий оставлю на картинке.

К стати интересно)) надо тоже такое намутить себе.

Аватар пользователя

"..есть ли простой способ это сделать? Учитывая то, что сайт всегда будет локальным... Или в серверных языках есть такая возможность? Тогда посоветуйте язык для изучения"

Python и библиотека Eel в помощь. Серверную часть пишите на Python(не), а интерфейс и логику можно оставить на html/js.

Аватар пользователя
Искусственный Интеллект

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