พื้นที่จัดเก็บในเครื่องและ IndexedDB
ใช้กลไกจัดเก็บข้อมูลแบบเดียวกับเบราว์เซอร์ เช่น `localStorage` และ `IndexedDB` เพื่อเก็บข้อมูลฝั่งไคลเอ็นต์อย่างถาวรภายในแอป Electron
พื้นที่จัดเก็บในเครื่องและ IndexedDB เป็นบทเรียน Electron Desktop App Development ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Electron Desktop App Development และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Electron Desktop App Development มีบทเรียนทั้งหมด 3 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Saving Data in Electron Apps
When building desktop applications with Electron, you often need to save user data or application settings. This is called data persistence.
Unlike web apps that rely on servers, Electron apps can store data directly on the user's computer. This lesson explores two common browser-like storage methods: localStorage and IndexedDB.
Introducing Web Storage API
Electron's renderer processes are essentially web browsers. This means you can use standard browser APIs for data storage, like the Web Storage API.
The Web Storage API provides two main types:
localStorage: Stores data with no expiration date.sessionStorage: Stores data only for the duration of the browser session.
We'll focus on localStorage for persistent data.
Understanding localStorage
localStorage allows you to store data as simple key-value pairs. Think of it like a small, local dictionary.
- Persistence: Data stored in
localStorageremains even after the app is closed and reopened. - Scope: Data is unique to the origin (your app's domain, usually
file://for Electron). - Capacity: Limited to about 5-10 MB per origin.
It's great for small amounts of data like user preferences or simple settings.
Storing Data with localStorage
You can store data in localStorage using the setItem() method. Remember, values are always stored as strings.
Try running this example in your renderer process:
/* This code runs in the Electron renderer process. */
const username = "CoddyKitUser";
localStorage.setItem("userName", username);
const userSettings = {
theme: "dark",
notifications: true
};
// Objects need to be converted to JSON strings
localStorage.setItem("appSettings", JSON.stringify(userSettings));
console.log("Data saved to localStorage!");Retrieving & Removing localStorage Data
To get data back, use getItem(). To delete, use removeItem(). If you stored an object, you'll need to parse it back from JSON.
Run this snippet after the previous one:
/* This code runs in the Electron renderer process. */
const storedUsername = localStorage.getItem("userName");
console.log("Stored Username:", storedUsername);
const storedSettingsString = localStorage.getItem("appSettings");
if (storedSettingsString) {
const storedSettings = JSON.parse(storedSettingsString);
console.log("Stored Theme:", storedSettings.theme);
}
// To remove an item:
localStorage.removeItem("userName");
console.log("Username removed.");
// To clear all localStorage for the origin:
// localStorage.clear();Limitations of localStorage
While easy to use, localStorage has some limitations:
- Size Limit: Typically 5-10 MB per origin. Not suitable for large datasets.
- String-Only: All data is stored as strings. Objects and arrays must be manually serialized (e.g., with
JSON.stringify()) and deserialized (JSON.parse()). - Synchronous: Operations block the main thread, which can cause UI freezes if you're storing/retrieving a lot of data.
- No Indexing/Querying: You can't directly query data, only access by key.
Introducing IndexedDB
For larger, more structured, and complex data, IndexedDB is a powerful alternative. It's a low-level API for client-side storage of significant amounts of structured data.
- No Size Limit: Generally limited only by available disk space.
- Structured Data: Can store JavaScript objects directly, not just strings.
- Asynchronous: Operations don't block the UI thread, making it suitable for performance-critical apps.
IndexedDB Core Concepts
IndexedDB works with a few key concepts:
- Databases: You create databases, each with a name and version.
- Object Stores: Like tables in a relational database, but they store JavaScript objects. Each object store has a key path.
- Indexes: For fast querying of data within an object store.
- Transactions: All read and write operations must occur within a transaction, ensuring data integrity.
- Asynchronous: Operations return
IDBRequestobjects, which resolve withsuccessorerrorevents (or Promises).
Basic IndexedDB Setup
Setting up IndexedDB involves opening a database and defining object stores. This is usually done in the renderer process.
This example shows how to open a database and create an object store if it doesn't exist:
/* This code runs in the Electron renderer process. */
const request = indexedDB.open("CoddyKitDB", 1); // DB name, version
request.onerror = (event) => {
console.error("Database error:", event.target.errorCode);
};
request.onsuccess = (event) => {
const db = event.target.result;
console.log("Database opened successfully!");
// You can now interact with the database (add/get data)
db.close(); // Close when done if not actively using
};
request.onupgradeneeded = (event) => {
// This runs if the database didn't exist or version changed
const db = event.target.result;
const objectStore = db.createObjectStore("users", { keyPath: "id" });
console.log("Object store 'users' created.");
// You can also create indexes here
objectStore.createIndex("name", "name", { unique: false });
};Quick Check on Storage
You've learned about localStorage and IndexedDB. Which statement accurately describes a key difference?
Recap: Local & IndexedDB
Great job! You've explored client-side data persistence in Electron:
localStorageis simple, synchronous, key-value storage for small, non-critical data.IndexedDBis a powerful, asynchronous, transactional database for large amounts of structured data.
Choosing between them depends on your data's size, structure, and performance needs. Both are crucial for building robust Electron applications that save user data locally.
เรียนรู้ JavaScript ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 47
คำถามที่พบบ่อย
บทเรียน “พื้นที่จัดเก็บในเครื่องและ IndexedDB” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นที่จัดเก็บในเครื่องและ IndexedDB” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Electron Desktop App Development ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Electron Desktop App Development มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นที่จัดเก็บในเครื่องและ IndexedDB”
ใช้กลไกจัดเก็บข้อมูลแบบเดียวกับเบราว์เซอร์ เช่น `localStorage` และ `IndexedDB` เพื่อเก็บข้อมูลฝั่งไคลเอ็นต์อย่างถาวรภายในแอป Electron คุณปฏิบัติ Electron Desktop App Development ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Electron Desktop App Development หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Electron Desktop App Development บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน
บทเรียน “พื้นที่จัดเก็บในเครื่องและ IndexedDB” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Electron Desktop App Development นี้ได้ไหม
ได้ บทเรียน Electron Desktop App Development ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นที่จัดเก็บในเครื่องและ IndexedDB
- การเข้าถึงระบบไฟล์
- ฐานข้อมูล SQLite แบบฝังตัว