Подходящие структуры данных для сохранения файлов в localStorage (HTML5)? - PullRequest
7 голосов
/ 10 мая 2010

Хорошо, когда нет БД для обслуживания и пользователей для аутентификации. Мой профессор попросил меня преобразовать его недавний исследовательский проект, который использует Bespin и вычисляет ошибки, сделанные пользователями в редакторе кода, как часть его исследования.

Цель - полностью перейти с MySQL на использование HTML5 localStorage. Кажется, это не так сложно сделать, хотя копание в его коде может занять некоторое время.

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

Мое текущее решение> Решение, подобное Hashmap, с объектами javascript:

files = {};
// later, saving
files[fileName] = data;

И затем сохранение в localStorage, используя некоторые рекомендации

localStorage.setObject("files", files);
// Note that setObject(key, data) does not exist but is added
// using Storage.prototype.setObject = function() {...

В настоящее время я также рассматриваю возможность использования какого-либо типа числового идентификатора. Так что имена могут быть изменены без каких-либо хлопот, переименовывая ключ в hashmap. Каково ваше мнение о том, как оно решается, и вы бы поступили иначе?

1 Ответ

8 голосов
/ 14 мая 2010

В настоящее время после некоторых чтений и исследований я решил, что лучший способ - хранить все в объектах с использованием литералов объектов:

var files = {};
// Add loads of data

И затем сохранить их, используя JSON.stringify():

localStorage.setItem('myFiles', JSON.stringify(files));

Это хорошая практика, поскольку в ней хранятся большие объемы информации, которые легко хранить и получать к ней доступ. Также это не дает запутаться, когда использовать простой способ добавления информации пары ключ-значение в localStorage и когда использовать функцию localStorage.setItem(key, value)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...