[Javascript] حلول حلول التخزين المحلي HTML5


Answers

النقي جس استنادا بوليفيل لوكالستوراج بسيط:

عرض توضيحي: http://jsfiddle.net/aamir/S4X35/

HTML:

<a href='#' onclick="store.set('foo','bar')">set key: foo, with value: bar</a><br/>
<a href='#' onclick="alert(store.get('foo'))">get key: foo</a><br/>
<a href='#' onclick="store.del('foo')">delete key: foo</a>

JS:

window.store = {
    localStoreSupport: function() {
        try {
            return 'localStorage' in window && window['localStorage'] !== null;
        } catch (e) {
            return false;
        }
    },
    set: function(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else {
            var expires = "";
        }
        if( this.localStoreSupport() ) {
            localStorage.setItem(name, value);
        }
        else {
            document.cookie = name+"="+value+expires+"; path=/";
        }
    },
    get: function(name) {
        if( this.localStoreSupport() ) {
            var ret = localStorage.getItem(name);
            //console.log(typeof ret);
            switch (ret) {
              case 'true': 
                  return true;
              case 'false':
                  return false;
              default:
                  return ret;
            }
        }
        else {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for(var i=0;i < ca.length;i++) {
                var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) {
                    ret = c.substring(nameEQ.length,c.length);
                    switch (ret) {
                      case 'true': 
                          return true;
                      case 'false':
                          return false;
                      default:
                          return ret;
                    }
                }
            }
            return null;
        }
    },
    del: function(name) {
        if( this.localStoreSupport() ) {
            localStorage.removeItem(name);
        }
        else {
            this.set(name,"",-1);
        }
    }
}​
Question

أنا أبحث عن مكتبات جافا سكريبت ورمز التي يمكن محاكاة localStorage على المتصفحات التي لا تملك الدعم الأصلي.

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

حتى الآن، لقد وجدت هذه الحلول:

  1. تنفيذ جلسة عمل بسيطة.
  2. تطبيق يستخدم ملفات تعريف الارتباط (غير سعيدة بهذه الفكرة).
  3. دوجو dojox.storage ، لكنه هو الشيء نفسه، وليس حقا تراجع.

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

يرجى مشاركة أي مكتبات أو موارد أو مقتطفات شفرة تم العثور عليها. سأكون مهتما بشكل خاص في جافاسكريبت النقي أو الحلول القائمة على مسج، ولكن أنا التخمين أن من غير المحتمل.




يستخدم store.js وسيرداتا و إي و لوكالستوراج على المتصفحات الأخرى.

  • انها لا تحاول أن تفعل أي شيء معقد جدا

  • لا ملفات تعريف الارتباط، لا فلاش، لا مسج المطلوبة.

  • أبي نظيفة.

  • 5 كيلو بايت مضغوطة

https://github.com/marcuswestin/store.js




يبدو أن لونشير يبدو بديلا جيدا

الكرسي هو الفرش مثل الأريكة باستثناء أصغر وخارج. مثالية لتطبيقات المحمول HTML5 التي تحتاج إلى خفيفة الوزن، التكيف، بسيطة وأنيقة الحل الثبات.

  • مجموعات. مثال على كرسي متحرك هو في الحقيقة مجرد مجموعة من الكائنات.
  • الثبات التكيفي. يتم تخزين المخزن الأساسي وراء واجهة متسقة.
  • سلوك مجموعة قابلة للتوصيل. وأحيانا نحتاج المساعدين جمع ولكن ليس دائما.



أنا شخصيا أفضل amplify.js . وقد عملت بشكل جيد حقا بالنسبة لي في الماضي، وأوصى به لجميع احتياجات التخزين المحلية.

يدعم إي 5+، فايرفوكس 2+، سفاري 4+، كروم، أوبرا 10.5+، اي فون 2+، الروبوت 2+ ويوفر أبي متسقة للتعامل مع التخزين عبر متصفح