در حال بارگذاری...

ذخیره‌سازی وب

ذخیرهٔ وب یک یادداشت کوچک را برای همین سایت در مرورگر نگه می‌دارد. localStorage بعد از بستن مرورگر هم هست. این صفحه { guest: "lida", drink: "tea" } را ذخیره می‌کند و خطش saved / lida / tea است.

این صفحهٔ الگو نیست

آن صفحه روی true / Order: mint تمام شد. آنجا یک رشته جست‌وجو شد و چیزی پرتاب نشد. اینجا هم اگر کلید نباشد خطا پرتاب نمی‌شود: getItem مقدار null برمی‌گرداند. کوکی مال صفحهٔ بعد است. این ذخیره با هر درخواستی که مرورگر می‌فرستد همراه نمی‌شود.

مقدار همیشه رشته است

setItem زیر یک کلید می‌نویسد. getItem همان را برمی‌گرداند. اگر عدد بدهی، به‌صورت متن ذخیره می‌شود.

ذخیرهٔ یک نوشیدنی

javascript
localStorage.setItem("drink", "tea");
console.log(localStorage.getItem("drink"));
console.log(localStorage.getItem("size"));

لاگ‌ها tea و بعد null هستند. size هیچ‌وقت نوشته نشده، پس مقداری نیست و خطایی هم نیست. setItem("count", 2) نویسه‌های 2 را ذخیره می‌کند، نه عدد. بعد از بارگذاری دوباره، getItem("drink") هنوز tea است.

شیء باید به‌صورت JSON برود

اگر خود شیء را به setItem بدهی، متن [object Object] ذخیره می‌شود. JSON.stringify متنی می‌سازد که بشود نگه‌اش داشت. JSON.parse دوباره شیء می‌سازد. JSON.parse(null) خطا می‌دهد، پس اول مقدار را بخوان و اگر null بود parse نکن.

ذخیرهٔ سفارش

javascript
const order = { guest: "lida", drink: "tea" };
localStorage.setItem("w3-order", JSON.stringify(order));
const raw = localStorage.getItem("w3-order");
const back = JSON.parse(raw);
console.log(back.guest + " / " + back.drink);

لاگ lida / tea است. کلید w3-order متن دارد و back دوباره شیء است. هر صفحه روی همین مبدأ می‌تواند آن کلید را بخواند.

عمر تب، یا عمر مرورگر

sessionStorage همان سه متد را دارد. تا وقتی آن تب باز است زنده است. localStorage وقتی مرورگر دوباره باز شود هنوز هست. removeItem یک کلید را پاک می‌کند. clear همهٔ کلیدهای همین مبدأ را پاک می‌کند، پس برای مرتب کردن یک سفارش صدایش نزن.

یادداشت تب، بعد حذف

javascript
sessionStorage.setItem("drink", "mint");
console.log(sessionStorage.getItem("drink"));
sessionStorage.removeItem("drink");
console.log(sessionStorage.getItem("drink"));

لاگ‌ها mint و بعد null هستند. تب دوم آن کلید sessionStorage را ندارد. کلید w3-order در localStorage در هر دو تب هست. بستن تب فقط یادداشت نشست را می‌برد.

یک مبدأ، همهٔ صفحه‌ها

این جعبه بین طرح، میزبان و درگاه مشترک است. جعبهٔ یک فایل نیست. کلیدی که در صفحهٔ اول بگذاری در صفحهٔ سفارش همان سایت دیده می‌شود. سایت دیگر آن را نمی‌خواند.

خط صفحه

صفحه سفارش را می‌نویسد، برمی‌خواند، و مهمان و نوشیدنی را نشان می‌دهد.

نمایش صفحه — سفارش ذخیره‌شده

html
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const order = { guest: "lida", drink: "tea" };
localStorage.setItem("w3-order", JSON.stringify(order));
const back = JSON.parse(localStorage.getItem("w3-order"));
document.querySelector("#line").textContent =
"saved / " + back.guest + " / " + back.drink;
</script>
</body>
</html>

خط saved / lida / tea است. نمونه را دوباره بارگذاری کن؛ همان واژه‌ها از localStorage برمی‌گردند. true / Order: mint مال صفحهٔ الگو بود.

پشت پیشخوان

  1. drink را tea بگذار. getItem مقدار tea برمی‌گرداند.
  2. getItem برای size مقدار null برمی‌گرداند.
  3. سفارش را با JSON.stringify ذخیره کن. بعد از parse لاگ lida / tea است.
  4. mint را در sessionStorage بگذار و removeItem کن. getItem مقدار null برمی‌گرداند.
  5. صفحه را بخوان. خط saved / lida / tea است.

جاهایی که اشتباه می‌شود

ذخیره رشته را یادش می‌ماند، نه شیء زنده را. clear کل مبدأ است، نه یک کلید.

  • دادن شیء به setItem و بعد خواندن [object Object]
  • صدا زدن JSON.parse روی null
  • انتظار اینکه sessionStorage در تب تازه بماند
  • صدا زدن clear و پاک شدن همهٔ کلیدهای سایت
  • خواندن خط به‌شکل true / Order: mint

این‌ها را نگه دار

  • setItem و getItem رشته ذخیره می‌کنند و می‌خوانند
  • کلید نبوده null است
  • شیء با JSON.stringify می‌رود و با JSON.parse برمی‌گردد
  • localStorage بعد از راه‌اندازی دوباره می‌ماند؛ sessionStorage با تب تمام می‌شود
  • خط صفحه saved / lida / tea است

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
6
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود