تخزين كائنات JavaScript في HTML5 localStorage وsessionStorage

تخزين كائنات JavaScript في HTML5 localStorage وsessionStorage
تخزين كائنات JavaScript في HTML5 localStorage وsessionStorage

العمل مع الكائنات الموجودة في تخزين الويب

عند العمل مع HTML5 localStorage أو sessionStorage، غالبًا ما يواجه المطورون مشكلات عند محاولة تخزين كائنات JavaScript. على عكس أنواع البيانات والمصفوفات البدائية، يبدو أن الكائنات قد تم تحويلها إلى سلاسل، مما قد يؤدي إلى حدوث ارتباك ونتائج غير متوقعة.

يعد فهم كيفية تخزين الكائنات واستردادها بشكل صحيح باستخدام Web Storage أمرًا بالغ الأهمية للعديد من تطبيقات الويب. سوف يستكشف هذا الدليل سبب تحويل الكائنات إلى سلاسل ويوفر حلاً بسيطًا لضمان تخزين الكائنات واسترجاعها بشكل صحيح.

يأمر وصف
JSON.stringify() يحول كائن JavaScript أو قيمة إلى سلسلة JSON، مما يسمح بالتخزين في localStorage أو sessionStorage.
localStorage.setItem() يخزن زوج المفتاح والقيمة في كائن localStorage، مما يسمح للبيانات بالاستمرار عبر جلسات المتصفح.
localStorage.getItem() يسترد القيمة المرتبطة بمفتاح معين من localStorage.
JSON.parse() يوزع سلسلة JSON ويحولها مرة أخرى إلى كائن JavaScript، مما يتيح استرجاع بنيات البيانات المعقدة.
sessionStorage.setItem() يخزن زوج المفتاح والقيمة في كائن sessionStorage، مما يسمح للبيانات بالاستمرار طوال مدة جلسة الصفحة.
sessionStorage.getItem() يسترد القيمة المرتبطة بمفتاح معين من sessionStorage.

تخزين واسترجاع الكائنات بشكل فعال في تخزين الويب

في جافا سكريبت، localStorage و sessionStorage هي كائنات تخزين ويب تسمح لك بحفظ أزواج القيمة الأساسية في المتصفح. ومع ذلك، تدعم حلول التخزين هذه السلاسل فقط، مما يعني أن محاولة تخزين كائن JavaScript مباشرة سيؤدي إلى تحويل الكائن إلى تمثيل سلسلة مثل [object Object]. لتخزين الكائنات بشكل فعال، تحتاج إلى تحويلها إلى سلسلة JSON باستخدام JSON.stringify(). تأخذ هذه الطريقة كائن JavaScript وترجع سلسلة JSON، والتي يمكن تخزينها فيه localStorage أو sessionStorage.

لاسترداد الكائن المخزن، يجب عليك تحويل سلسلة JSON مرة أخرى إلى كائن JavaScript باستخدام JSON.parse(). تأخذ هذه الطريقة سلسلة JSON وترجع كائن JavaScript المقابل. توضح البرامج النصية المتوفرة في الأمثلة أعلاه هذه العملية. أولاً، يتم إنشاء كائن وتحويله إلى سلسلة JSON باستخدام JSON.stringify() قبل أن يتم تخزينها في localStorage استخدام localStorage.setItem(). لاسترداد الكائن، يتم جلب سلسلة JSON من localStorage استخدام localStorage.getItem() ثم يتم تحليلها مرة أخرى إلى كائن JavaScript باستخدام JSON.parse().

تخزين واسترجاع كائنات JavaScript في localStorage

استخدام JavaScript وJSON للتخزين المحلي

// Create an object
var testObject = {'one': 1, 'two': 2, 'three': 3};

// Convert the object to a JSON string and store it in localStorage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the JSON string from localStorage and convert it back to an object
var retrievedObject = JSON.parse(localStorage.getItem('testObject'));

// Verify the type and value of the retrieved object
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ', retrievedObject);

// Output should be:
// typeof retrievedObject: object
// Value of retrievedObject: { one: 1, two: 2, three: 3 }

تخزين واسترجاع كائنات JavaScript في sessionStorage

استخدام JavaScript وJSON لتخزين الجلسة

// Create an object
var testObject = {'one': 1, 'two': 2, 'three': 3};

// Convert the object to a JSON string and store it in sessionStorage
sessionStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the JSON string from sessionStorage and convert it back to an object
var retrievedObject = JSON.parse(sessionStorage.getItem('testObject'));

// Verify the type and value of the retrieved object
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ', retrievedObject);

// Output should be:
// typeof retrievedObject: object
// Value of retrievedObject: { one: 1, two: 2, three: 3 }

التقنيات المتقدمة للتخزين على شبكة الإنترنت

عند استخدام HTML5 localStorage و sessionStorageغالبًا ما يحتاج المطورون إلى تخزين بيانات أكثر تعقيدًا من مجرد سلاسل. على الرغم من أن تسلسل JSON وإلغاء التسلسل فعالان بالنسبة للكائنات الأساسية، إلا أن السيناريوهات الأكثر تقدمًا قد تتطلب اعتبارات إضافية. على سبيل المثال، إذا كنت تعمل مع كائنات متداخلة بعمق أو كائنات تحتوي على أساليب، فأنت بحاجة إلى أسلوب أكثر تعقيدًا. أحد الأساليب الشائعة هو استخدام مكتبة مثل Flatted أو circular-json للتعامل مع المراجع الدائرية وهياكل الكائنات الأكثر تعقيدًا.

تعمل هذه المكتبات على توسيع المعيار JSON.stringify() و JSON.parse() طرق لدعم التسلسل وإلغاء تسلسل الكائنات ذات المراجع الدائرية، مما يتيح حلاً أكثر قوة لتخزين الكائنات في وحدة تخزين الويب. وهناك اعتبار آخر هو ضغط البيانات. بالنسبة للكائنات الكبيرة، يمكنك استخدام المكتبات مثل LZ-String لضغط البيانات قبل تخزينها localStorage أو sessionStorage، مما يقلل من مقدار المساحة المستخدمة. يمكن أن يكون هذا مفيدًا بشكل خاص للتطبيقات التي تحتاج إلى تخزين كمية كبيرة من البيانات من جانب العميل.

أسئلة شائعة حول تخزين الكائنات في وحدة تخزين الويب

  1. هل يمكنني تخزين الوظائف في localStorage أو sessionStorage؟
  2. لا، لا يمكن تخزين الوظائف مباشرة في وحدة تخزين الويب. يمكنك تخزين رمز الوظيفة كسلسلة واستخدامها eval() لإعادة إنشائه، ولكن لا يوصى بهذا بشكل عام بسبب المخاطر الأمنية.
  3. كيف أتعامل مع المراجع الدائرية في الكائنات؟
  4. استخدم المكتبات مثل Flatted أو circular-json والتي تم تصميمها للتعامل مع المراجع الدائرية في كائنات JavaScript.
  5. ما هو الحد الأقصى للتخزين ل localStorage؟
  6. الحد الأقصى للتخزين ل localStorage يبلغ حجمه عادةً حوالي 5 ميغابايت، ولكنه قد يختلف بين المتصفحات.
  7. هل يمكنني ضغط البيانات قبل تخزينها؟
  8. نعم، يمكنك استخدام المكتبات مثل LZ-String لضغط بياناتك قبل تخزينها localStorage أو sessionStorage.
  9. كيف يمكنني تخزين مجموعة من الكائنات؟
  10. تحويل المصفوفة إلى سلسلة JSON باستخدام JSON.stringify() قبل تخزينها فيه localStorage أو sessionStorage.
  11. هل من الآمن تخزين البيانات الحساسة في localStorage؟
  12. لا، ليس من الآمن تخزين البيانات الحساسة فيها localStorage حيث يمكن الوصول إليه من خلال JavaScript ويمكن اختراقه إذا تعرض الموقع للهجوم.
  13. هل بإمكاني استخدم localStorage عبر المجالات المختلفة؟
  14. لا، localStorage يقتصر على نفس الأصل، مما يعني أنه لا يمكن الوصول إليه عبر مجالات مختلفة.
  15. ماذا يحدث إذا قام المستخدم بمسح بيانات المتصفح الخاصة به؟
  16. جميع البيانات المخزنة في localStorage و sessionStorage ستتم إزالته إذا قام المستخدم بمسح بيانات المتصفح الخاصة به.

الأفكار النهائية حول إدارة تخزين الكائنات

يتطلب تخزين الكائنات واسترجاعها بشكل فعال في تخزين ويب HTML5 تحويل الكائنات إلى سلاسل JSON باستخدام JSON.stringify() ومن ثم تحليلها مرة أخرى مع JSON.parse(). تضمن هذه الطريقة بقاء البيانات سليمة وقابلة للاستخدام عبر جلسات المتصفح المختلفة. من خلال فهم هذه التقنيات واستخدامها، يمكن للمطورين الاستفادة من localStorage وsessionStorage للقيام بمهام إدارة البيانات الأكثر تعقيدًا، مما يعزز وظائف وأداء تطبيقات الويب الخاصة بهم.