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

JavaScript

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

عند العمل مع 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.

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

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

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

تخزين واسترجاع كائنات 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 و غالبًا ما يحتاج المطورون إلى تخزين بيانات أكثر تعقيدًا من مجرد سلاسل. على الرغم من أن تسلسل JSON وإلغاء التسلسل فعالان بالنسبة للكائنات الأساسية، إلا أن السيناريوهات الأكثر تقدمًا قد تتطلب اعتبارات إضافية. على سبيل المثال، إذا كنت تعمل مع كائنات متداخلة بعمق أو كائنات تحتوي على أساليب، فأنت بحاجة إلى أسلوب أكثر تعقيدًا. أحد الأساليب الشائعة هو استخدام مكتبة مثل أو circular-json للتعامل مع المراجع الدائرية وهياكل الكائنات الأكثر تعقيدًا.

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

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

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