البيئات المتوافقة
تتوافق حزمة تطوير البرامج (SDK) Firebase JavaScript رسميًا مع البيئات التالية.
المتصفحات
منتج Firebase | Edge | Firefox | Chrome | متصفّح Safari على iOS | Safari |
---|---|---|---|---|---|
Firebase AI Logic 1 | |||||
Analytics | |||||
App Check | |||||
Authentication | |||||
Cloud Firestore | (except persistence) |
(باستثناء الثبات إذا كان إصدار iOS أقل من 10) |
|||
Cloud Functions | |||||
Firebase من عمليات التثبيت | |||||
Cloud Messaging | (الإصدار 17 من Edge أو الإصدارات الأحدث، باستثناء الأجهزة الجوّالة) |
||||
Cloud Storage | |||||
Data Connect | |||||
Performance Monitoring | |||||
Realtime Database | |||||
Remote Config |
1 كان اسم Firebase AI Logic في السابق "Vertex AI in Firebase".
بيئات أخرى
منتج Firebase | React Native | Node.js (18+) | إضافات Chrome |
Cordova |
---|---|---|---|---|
Firebase AI Logic 1 | ||||
App Check | (استخدام موفّر مخصّص لإجراء عملية إثبات صحة الجهاز) |
(باستخدام موفّر مخصّص) |
||
Analytics | ||||
Authentication | (راجِع ملاحظة) |
(راجِع ملاحظة) |
(راجِع ملاحظة) |
(راجِع ملاحظة) |
Cloud Firestore | (except persistence) |
(except persistence) |
||
Cloud Functions | ||||
Data Connect | ||||
Firebase من عمليات التثبيت | ||||
Cloud Messaging | ||||
Cloud Storage | (باستثناء عمليات التحميل) |
|||
Performance Monitoring | ||||
Realtime Database | ||||
Remote Config |
1 كان اسم Firebase AI Logic في السابق "Vertex AI in Firebase".
تعويض الميزات المفقودة من المتصفحات
تم إنشاء حزمة تطوير البرامج (SDK) Firebase JavaScript استنادًا إلى أحدث معايير منصة الويب. لا تتوافق بعض المتصفّحات القديمة وبيئات JavaScript مع جميع الميزات التي تتطلّبها Firebase. إذا كان عليك توفير الدعم لهذه المتصفحات/البيئات، عليك تحميل عمليات التعبئة الناقصة وفقًا لذلك.
تحدّد الأقسام أدناه معظم الرموز البديلة التي قد تحتاج إليها.
عمليات التعبئة المطلوبة
البيئات | Polyfills |
---|---|
Safari 7 و8 و9 | الإصدار الثابت من ES |
العقدة < 10 | الإصدار الثابت من ES |
ملفات التعبئة الاختيارية
البيئات | Polyfills | منتجات Firebase |
---|---|---|
|
fetch |
|
|
fetch |
|
|
base-64 |
|
ملفات polyfill المقترَحة
Polyfills | الترخيص |
---|---|
ES إصدار ثابت | MIT |
fetch - `cross-fetch` - الأفضل للمتصفحات القديمة | MIT |
fetch - `undici` - الأفضل لتطبيق Node.js | MIT |
base-64 | MIT |
إعداد Polyfill المطلوب لتطبيقَي React Native وExpo
بالنسبة إلى React Native وExpo، إذا كنت تحمّل سلسلة مرمّزة باستخدام base-64، عليك اتّخاذ الإجراءات التالية:
ثبِّت base-64 من npm:
npm install base-64
استورِد decode
من base-64
وأرفِقه بالنطاق العام باسم atob
حتى يتمكّن Cloud Storage من الوصول إليه.
import { decode } from 'base-64';
if(typeof atob === 'undefined') {
global.atob = decode;
}
إضافة polyfills في تطبيقك
الخيار 1: (يُفضّل اتّخاذ هذا الإجراء) استخدام أداة تجميع مدمجة مع Babel
إذا كنت تستخدم أداة تجميع، يمكنك الدمج مع Babel و @babel/preset-env للحصول على polyfills.
استخدِم دليل الإعداد التفاعلي الخاص بـ Babel للتعرّف على كيفية دمج Babel مع أداة تجميع الحِزم.
باستخدام Babel، لن تحتاج إلى القلق بشأن عمليات التعبئة الدقيقة التي يجب تضمينها. بدلاً من ذلك، عليك تحديد الحد الأدنى من بيئات المتصفح التي تحتاج إلى توفير الدعم لها. بعد ذلك، يضيف Babel الرموز البرمجية اللازمة لتوفير التوافق. يضمن Babel استيفاء متطلباتك بشأن توافق المتصفح دائمًا، حتى إذا بدأت Firebase أو الرمز الخاص بك في استخدام ميزات ES الجديدة.
يتضمّن @babel/preset-env معلومات مفصّلة حول خيارات الإعداد المتاحة لتحديد استهدافات البيئة (الخيار targets
) وإضافة عمليات التعبئة (الخيار useBuiltIns
).
الخيار 2: (لا يُنصح به) إضافة polyfills يدويًا
يمكنك إضافة polyfills يدويًا باستخدام مكتبات polyfill المفضّلة لديك (على سبيل المثال، core-js
).
import 'core-js/stable'
import 'cross-fetch/polyfill';
توفّر core-js
أيضًا
ملف polyfill متكاملاً
يمكنك تضمينه مباشرةً في صفحة HTML.
يمكن أن يكون هذا الخيار طريقة ملائمة لإدارة polyfills إذا كنت لا تستخدم Babel. ومع ذلك، لا ننصح باستخدام هذا الخيار الشامل للتطبيقات المخصّصة للإنتاج لأنّه من المحتمل أن يتضمّن عمليات تعويض غير ضرورية، ما يزيد من حجم الصفحة وبالتالي من وقت تحميلها.