«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > IndexedDB объяснил.

IndexedDB объяснил.

Опубликовано в 2025-03-23
Просматривать:347

В нашей предыдущей статье мы обсудили Dexie, обертку для IndexedDB. В этой статье мы обсуждаем IndexedDB. Вы должны быть знакомы с этим API LocalStorage, обычно используемым для хранения информации в браузере. Аналогично, IndexedDB используется для хранения клиентских сторон.

]

] что такое IndexedDb? ]

]

mdn документация Объяснение:

] IndexedDB-это API низкого уровня для хранения на стороне клиента значительных объемов структурированных данных, включая файлы/каждые. В этом API используются индексы для обеспечения высокопроизводительных поисков этих данных. Хотя веб -хранилище полезно для хранения меньших объемов данных, оно менее полезно для хранения больших объемов структурированных данных.

]

IndexedDB explained.

IndexedDB предоставляет решение. Это основная целевая страница для покрытия MDN IndexedDB - здесь мы предоставляем ссылки на полные руководства по ссылке и использование API, данные поддержки браузеров и некоторые объяснения ключевых концепций.

] пример репозитория:

]

MDN предоставляет пример репозитория GitHub и имеет Script/todo.js.

]

скрипт инициализируется с помощью window.onload
]

]
window.onload = () => {
}
]

] открыть запрос в базу данных: ]

]
// Let us open our database
const DBOpenRequest = window.indexedDB.open('toDoList', 4);
]

] Ошибка соединения:

]
// Register two event handlers to act on the database being opened successfully, or not
DBOpenRequest.onerror = (event) => {
 note.appendChild(createListItem('Error loading database.'));
};
]

] на успешном подключении к базе данных: ]

]
DBOpenRequest.onsuccess = (event) => {
 note.appendChild(createListItem('Database initialised.'));
// Store the result of opening the database in the db variable. This is used a lot below
 db = DBOpenRequest.result;
// Run the displayData() function to populate the task list with all the to-do list data already in the IndexedDB
 displayData();
};
]

] добавить DATA ]

]
// Open a read/write DB transaction, ready for adding the data
const transaction = db.transaction(['toDoList'], 'readwrite');
// Call an object store that's already been added to the database
const objectStore = transaction.objectStore('toDoList');
// Make a request to add our newItem object to the object store
const objectStoreRequest = objectStore.add(newItem[0]);
objectStoreRequest.onsuccess = (event) => {
 // process data on success.
}
// Report on the success of the transaction completing, when everything is done
transaction.oncomplete = () => {
 note.appendChild(createListItem('Transaction completed: database modification finished.'));
// Update the display of data to show the newly added item, by running displayData() again.
 displayData();
};
// Handler for any unexpected error
transaction.onerror = () => {
 note.appendChild(createListItem(`Transaction not opened due to error: ${transaction.error}`));
};
]

] наблюдение: localstorage vs IndexedDb ]

]

, возможно, вы можете понять, что требуется много кода, чтобы добавить запись, у вас есть асинхронные обратные вызовы, такие как Onerror и Onsuccess. Это указано в этом ответе на обмен стека.

]

, чтобы упростить обработку этого IndexedDb, Dexie можно использовать.

]

] добавить данные с Dexie: ]

]
export function AddFriendForm({ defaultAge } = { defaultAge: 21 }) {
 const [name, setName] = useState('');
 const [age, setAge] = useState(defaultAge);
 const [status, setStatus] = useState('');
async function addFriend() {
 try {
 // Add the new friend!
 const id = await db.friends.add({
 name,
 age
 });
setStatus(`Friend ${name} successfully added. Got id ${id}`);
 setName('');
 setAge(defaultAge);
 } catch (error) {
 setStatus(`Failed to add ${name}: ${error}`);
 }
 }
return (
 
 

{status}

Name: setName(ev.target.value)} /> Age: setAge(Number(ev.target.value))} /> > ); }
]

этот API обертки напоминает мне о такими ORM, как PRISMA и SORIZLE.

]

] О нас:

]

в Thinkthro, мы изучаем большие проекты с открытым исходным кодом и предоставляем архитектурные руководства. Мы разработали компоненты ресубале, построенные с Tailwind, которые вы можете использовать в своем проекте. Мы предлагаем службы разработки Next.js, React и Node.

]

забронируйте встречу с нами, чтобы обсудить ваш проект.

]

IndexedDB explained.

IndexedDB explained.

] Ссылки:

]
    ]
  1. https://www.reddit.com/r/sveltejs/comments/15rj12h/any_downsides_to_using_indexeddb_vs_localstorage/

  2. ]
  3. https://developer.mozilla.org/en-us/docs/web/api/indexeddb_api

  4. https://github.com/mdn/dom-examples/tree/main/to-do-notifications

  5. ]
  6. https://softwareengineering.stackexchange.com/questions/219953/how-is-localstorage-different-from-indexeddb

  7. ]
] ] ]
Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/thinkthroo/indexeddb-explaind-4gmg?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3