Когда я пишу свое первое приложение AngularJS, я столкнулся с требованием создать функцию ввода данных, которая будет работать в автономном режиме. На данный момент локальное хранилище - это скорее общее описание (для меня), чем конкретный способ работы с вещами. Мой вопрос: какова надежная техника / метод / api для хранения многих связанных записей в хранилище браузера, которые будут ощущаться при взаимодействии с базой данных?
Какой вариант локального хранилища ближе всего к использованию базы данных
Ответы (4)
На данный момент локальное хранилище - это скорее общее описание (для меня), чем конкретный способ работы с вещами.
Локальное хранилище - это действительно API, и оно должно быть таким. Благодаря localForge от Mozilla, это действительно просто API.
Из описания проекта:
Автономное хранилище, улучшено. Оборачивает IndexedDB, WebSQL или localStorage с помощью простого, но мощного API.
Ищет IndexDB, а затем возвращается к WebSQL, а затем к localStorage, если это действительно необходимо.
Однако, если вы хотите использовать функции фильтрации / сортировки базы данных, breezejs.com выглядит неплохо.
С локальным хранилищем HTML5 очень легко работать, но имейте в виду, что оно будет хранить только данные, специфичные для этого отдельного браузера, и никогда не позволит вам заменить внутреннюю базу данных, которая может хранить данные, агрегированные от нескольких клиентов.
На самом деле это всего лишь хранилище ключей и значений, поэтому, если вы ищете функциональные возможности реляционной базы данных, вы этого не получите.
Кроме того, это не будет обратно совместимо со старыми браузерами, которые не поддерживают эту функцию.
Вот хорошее введение в локальное хранилище HTML5: http://diveintohtml5.info/storage.html
Осмотревшись, оказывается, что использование индексирования - лучший вариант. Я нашел эти (два верхних) готовых примера того, как это сделать с помощью angular:
https://github.com/search?q=angular+indexeddb&ref=cmdform
Это простое приложение ToDo, использующее локальную базу хранения на AngularJS: http://jsfiddle.net/JayData/BMthf/ < / а>
function TodoCtrl($scope) {
$scope.todos = [];
var Todo = $data.define("Todo", {
task: String,
done: Boolean
});
Todo.readAll().then(function (todos) {
$scope.$apply(function () {
$scope.todos = todos;
});
});
$scope.addNew = function () {
Todo.save($scope.newTodo).then(function (todo) {
$scope.$apply(function () {
$scope.newTodo = null;
$scope.todos.push(todo);
});
});
};
}
Тарек