يعد تخزين البيانات في LocalStorage مفيدًا ، لكنه ليس حلاً جيدًا عند تخزين البيانات التي يجب مشاركتها عبر أجهزة أو متصفحات متعددة.
على سبيل المثال ، لنفترض أنك تريد إظهار وسيط ترحيب لجميع المستخدمين الجدد الذين يتسكلون لمنتجك. إذا كنت تستخدم LocalStorage لتتبع ما إذا كان المستخدم قد شاهد هذا الوسيط بالفعل ، فسيستمر المستخدمون في الحصول على التجربة مرارًا وتكرارًا في كل مرة يقومون فيها بتبديل الأجهزة أو المتصفحات.
هذا هو المكان الذي يأتي فيه Remotestorage. باستخدام نفس واجهة برمجة التطبيقات (API) مثل LocalStorage ، يتيح لك RemotEstorage قراءة وكتابة البيانات بسهولة أثناء الحفاظ على الحالة عبر المتصفحات والأجهزة من أجل توفير تجربة مستخدم أفضل.
قم بتثبيت المكتبة باستخدام مدير الحزمة المفضل لديك:
npm install remote-storageأو ببساطة تضمينه في HTML الخاص بك:
< script src =" https://unpkg.com/remote-storage@latest/dist/remote-storage.min.js " sync > </ script >استيراد المكتبة واستخدمها كما لو كنت محليًا:
import { RemoteStorage } from 'remote-storage'
const remoteStorage = new RemoteStorage ( { userId : "my-user-id" } )
const hasSeenNewFeature = await remoteStorage . getItem ( 'hasSeenNewFeature' )
if ( ! hasSeenNewFeature ) {
await remoteStorage . setItem ( 'hasSeenNewFeature' , true )
// Highlight your new and exciting feature!
}هذا كل شيء!
يستخدم Remotestorage معرفات المستخدم لتحديد المستخدمين. معرف المستخدم هو سلسلة تحدد مستخدم بشكل فريد. يمكن أن يكون أي شيء تريده ، لكننا نوصي باستخدام UUID غير قابل للتقييم لمنع المستخدمين من تخمين معرفات المستخدم الأخرى والوصول إلى بياناتهم.
يتم تعيين معرف المستخدم عند إنشاء مثيل جديد لـ Remotestorage:
const remoteStorage = new RemoteStorage ( {
userId : '123e4567-e89b-12d3-a456-426614174000'
} )إذا لم تقدم معرف مستخدم ، فسيقوم Remotestorage بإنشاء UUID عشوائيًا سيتغير في كل مرة يزور المستخدم موقعك. هذا مفيد للاختبار ، ولكن يهزم الغرض من remotestorage لأن البيانات لن تستمر عبر الأجهزة أو المتصفحات.
يستخدم Remotestorage معرفات المثيل لتحديد مثيل التطبيق الذي يقدم الطلب. معرف المثيل هو سلسلة تحدد بشكل فريد مثيل تطبيق. عادةً ما تستخدم معرف المثيل نفسه لجميع الطلبات من نفس مثيل التطبيق.
يتم تعيين معرف المثيل عند إنشاء مثيل جديد لـ Remotestorage:
const remoteStorage = new RemoteStorage ( {
userId : '123e4567-e89b-12d3-a456-426614174000' ,
instanceId : 'my-cool-app'
} ) نحن نقدم خادم مجتمعي مجاني مستضاف على https://api.remote.storage (السلوك الافتراضي إذا لم يتم توفير serverAddress ). لا ينبغي استخدام هذا الخادم المستضاف لتطبيقات الإنتاج ، ولكنه رائع للاختبار والنماذج الأولية.
لاستخدام خادم مختلف ، ما عليك سوى تمرير خيار serverAddress عند إنشاء مثيل جديد من Remotestorage:
const remoteStorage = new RemoteStorage ( {
serverAddress : 'https://api.remote.storage' ,
userId : '123e4567-e89b-12d3-a456-426614174000' ,
instanceId : 'my-cool-app'
} )يمكن نسج الخادم باستخدام Docker في غضون دقائق قليلة. راجع وثائق الخادم لمزيد من المعلومات.
يجب استخدام Remotestorage فقط للبيانات غير الحساسة. نوصي باستخدامه لأشياء مثل تفضيلات المستخدم والإعدادات والبيانات الأخرى غير الحساسة. نظرًا لطبيعة واجهة برمجة التطبيقات العامة ، فهي ليست مناسبة لتخزين البيانات الحساسة مثل كلمات المرور أو PII.
LocalStorage هي واجهة برمجة تطبيقات المتصفح تتيح لك تخزين البيانات في المتصفح. يتم تخزين البيانات محليًا على جهاز المستخدم ولا تتم مشاركتها عبر الأجهزة أو المتصفحات. Remotestorage هي مكتبة تجمع بين واجهة برمجة تطبيقات LocalStorage مع خادم بعيد لاستمرار البيانات عبر المتصفحات والأجهزة.
يمكن استخدام Remotestorage دون أي مصادقة ، لكننا نوصي بشدة باستخدام JSON Web Tokens (JWT) لمصادقة الطلبات على الخادم. يمكن القيام بذلك عن طريق تعيين متغير بيئة JWT_SECRET في .env إلى سر JWT الخاص بك للخادم. راجع وثائق الخادم لمزيد من المعلومات.
طلبات السحب دائما موضع ترحيب. لاحظ أنه إذا كنت ستقترح تغييرات جذرية ، فتأكد من فتح مشكلة للمناقشة أولاً. سيضمن ذلك قبول العلاقات العامة الخاصة بك قبل البدء في العمل عليه.
بالنسبة لأي مشكلات موجودة ليس لديها بعد مساهم مخصص ، لا تتردد في التعليق على المشكلة إذا كنت ترغب في العمل عليها. سنقوم بتعيين المشكلة لك إذا اعتقدنا أنك لائق جيد.
إجراء تغييرات: قم بتنفيذ إصلاح الأخطاء أو الميزة ، واكتب اختبارات لتغطية ذلك والتأكد من اجتياز جميع الاختبارات. تأكد من أن التزامك يعزز رسائل الالتزام الدلالية وأن رسالة الالتزام الخاصة بك تتبع تنسيق الالتزامات التقليدية. ثم افتح طلب سحب إلى الفرع الرئيسي.