LocalForage هو مستودع JavaScript سريع وبسيط. يعمل LocalForage على تحسين التجربة غير المتصلة بتطبيقات الويب باستخدام سعة التخزين غير المتزامنة (INSTERDB أو WebSQL) وواجهة برمجة تطبيقات LocalStorage بسيطة.
في المتصفحات التي لا تدعم indexedDB أو WebSQL ، يستخدم LocalForage LocalStorage. انظر الويكي للحصول على تفاصيل التوافق.
باستخدام LocalForage ، فقط ضع ملف JavaScript في الصفحة:
< script src =" localforage/dist/localforage.js " > </ script >
< script > localforage . getItem ( 'something' , myCallback ) ; </ script >جرب المثال.
قم بتنزيل أحدث LocalForage على Github ، أو قم بتثبيته عبر NPM:
npm install localforageأو من خلال باور:
bower install localforageLocalForage هو أيضا متصفح متوافق.
الشعور بالارتباك؟ هل تحتاج إلى مساعدة؟ جرب وثائق API المحلية.
إذا كنت تستخدم هذه المكتبة ، أو تشغيل الاختبارات أو ترغب في المساهمة في LocalForage ، تفضل بزيارة IRC.Freenode.net واستشر قناة #localforage للحصول على أسئلة حول LocalForage.
أفضل مستشار هو Tofumatt ، الذي يكون وقته على الإنترنت عمومًا من الساعة 10 صباحًا إلى 8 مساءً من Greenwich Time.
بدءًا من Safari 10.1 ، يكون الافتراضي هو INSEDDB ؛ انظر Changelog للمزيد.
نظرًا لأن LocalForage يستخدم التخزين غير المتزامن ، فإن واجهة برمجة التطبيقات غير متزامنة. من نواح أخرى ، هو بالضبط نفس واجهة برمجة تطبيقات LocalStorage.
يدعم LocalForage اثنين من واجهات برمجة التطبيقات ، يمكنك استخدام نموذج وظيفة رد الاتصال أو الوعد. إذا لم تكن متأكدًا من أيهما أفضل بالنسبة لك ، فمن المستحسن استخدام الوعد.
فيما يلي مثال على شكل وظيفة رد الاتصال:
localforage . setItem ( 'key' , 'value' , function ( err ) {
// 若 err 不为 null,则表示出错
localforage . getItem ( 'key' , function ( err , value ) {
// 若 err 不为 null,则表示出错,否则 value 为 key 对应的值
} ) ;
} ) ;شكل الوعد:
localforage . setItem ( 'key' , 'value' ) . then ( function ( ) {
return localforage . getItem ( 'key' ) ;
} ) . then ( function ( value ) {
// 成功获取值
} ) . catch ( function ( err ) {
// 出错了
} ) ;لمزيد من الأمثلة ، يرجى زيارة وثائق API.
يمكنك تخزين أي نوع في LocalForage ؛ على عكس LocalStorage ، يتم تخزين السلاسل فقط. حتى إذا كان نموذج التخزين للواجهة الخلفية محليًا ، فسوف يقوم LocalForage تلقائيًا بتنفيذ JSON.parse() و JSON.stringify() عندما يكون من الضروري الحصول على/تعيين القيمة.
طالما أنه كائن JS الأصلي الذي يمكن تسلسله في JSON ، يمكن تخزين LocalForage ، بما في ذلك Arraybuffers و Blobs و Typedarrays. في وثائق API ، يمكنك عرض جميع أنواع الدعم المحلي.
تدعم جميع برامج تشغيل التخزين الخلفية جميع الأنواع ، ولكن لدى LocalStorage قيود التخزين ، لذلك لا يمكن تخزين النقط الكبيرة.
يمكنك تعيين معلومات قاعدة البيانات من خلال طريقة config() . الخيارات المتوفرة هي driver والاسم ، name storeName ، version ، size ، description .
مثال:
localforage . config ( {
driver : localforage . WEBSQL , // 使用 WebSQL;也可以使用 setDriver()
name : 'myApp' ,
version : 1.0 ,
size : 4980736 , // 数据库的大小,单位为字节。现仅 WebSQL 可用
storeName : 'keyvaluepairs' , // 仅接受字母,数字和下划线
description : 'some description'
} ) ; ** ملاحظة: ** قبل تفاعل البيانات ، يجب عليك الاتصال config() أولاً. أي أنه يجب استدعاء config() قبل استخدام getItem() أو setItem() أو removeItem() clear() أو key() أو keys() أو length() .
من خلال طريقة createInstance ، يمكنك إنشاء مثيلات محلية متعددة يمكن أن تشير إلى مستودعات بيانات مختلفة. تتوفر جميع خيارات التكوين في التكوين.
var store = localforage . createInstance ( {
name : "nameHere"
} ) ;
var otherStore = localforage . createInstance ( {
name : "otherName"
} ) ;
// 设置某个数据仓库 key 的值不会影响到另一个数据仓库
store . setItem ( "key" , "value" ) ;
otherStore . setItem ( "key" , "value2" ) ; يمكنك استخدام LocalForage عبر requistjs:
define ( [ 'localforage' ] , function ( localforage ) {
// 作为回调函数
localforage . setItem ( 'mykey' , 'myvalue' , console . log ) ;
// 使用 Promise
localforage . setItem ( 'mykey' , 'myvalue' ) . then ( console . log ) ;
} ) ; LocalForage 1.3+ يدعم المتصفح و WebPack. إذا كنت تستخدم إصدارًا سابقًا من LocalForage ولديك مشاكل في Browserify أو WebPack ، فقم بالترقية إلى 1.3.0 أو أحدث.
عند بناء ملف JavaScript عادي مسبقًا ، قد يطالب WebPack برسالة تحذير. إذا كنت لا ترغب في رؤية التحذير ، فيمكنك استخدام التكوين التالي لتجاهل localforage عند تحليل WebPack:
module : {
noParse : / node_modules/localforage/dist/localforage.js / ,
loaders : [ ... ] , إذا قمت بتعيين خيار تجميع allowSyntheticDefaultImports إلى true في tsconfig.json (يدعم TypeScript V1.8+) ، فيجب عليك استخدامه مثل هذا:
import localForage from "localforage" ;خلاف ذلك ، يجب عليك استخدام إحدى الطرق التالية:
import * as localForage from "localforage" ;
// 若你用的 TypeScript 版本不支持 ES6 风格导入像 localForage 这样的 UMD 模块,则用如下方式导入:
import localForage = require ( "localforage" ) ; إذا كنت تستخدم الإطار التالي ، فإن LocalForage يوفر وحدات كبراجحة لهذه الأطر ، ويمكنك تخزين البيانات في وضع عدم الاتصال من خلال LocalForage. برامج التشغيل الإطارية المدعومة هي كما يلي:
إذا كان لديك برامج تشغيل أخرى وتريد إضافتها إلى هذه القائمة ، فيرجى تقديم مشكلة.
يمكنك إنشاء برامج التشغيل الخاصة بك. انظر وثائق API defineDriver .
هناك قائمة من برامج التشغيل المخصصة في الويكي.
تحتاج إلى الحصول على عقدة/NPM و BOWER.
لتطوير LocalForage ، تحتاج إلى شوكة أولاً وتثبيت التبعيات. استبدل USERNAME باسم مستخدم Github الخاص بك وقم بتشغيل الأمر التالي:
# 若你没有安装过 bower,则需要先全局安装 bower
npm install -g bower
# 将 USERNAME 替换为你的 GitHub 用户名:
git clone [email protected]:USERNAME/localForage.git
cd localForage
npm install
bower installالتبعيات باور المفقودة سوف تسبب فشل الاختبار!
مطلوب phantomjs لتنفيذ الاختبارات المحلية. تنفيذ npm test (أو مباشرة: grunt test ). يجب أن يمرر الرمز الخاص بك.
لا يمكن تشغيل LocalForage إلا في المتصفح ، لذلك مطلوب بيئة المتصفح لإجراء الاختبارات. يتم إجراء الاختبارات المحلية على متصفح WebKit مقطوع الرأس (باستخدام PhantomJs).
من خلال مختبرات الصلصة ، يدعم LocalForage Travis CI ، وسيتم إجراء الاختبارات تلقائيًا في جميع المتصفحات عند سحب الطلب.
هذا البرنامج هو برنامج مجاني ؛ اتفاقية الترخيص هي ترخيص Apache.
حقوق الطبع والنشر (C) 2013-2016 Mozilla (المساهمون).