البيئات المتوافقة
تتوفّر حزمة SDK لنظام التشغيل Firebase JavaScript رسميًا في البيئات التالية.
المتصفحات
منتج Firebase | Edge | Firefox | Chrome | Safari على نظام التشغيل iOS | Safari |
---|---|---|---|---|---|
App Check | |||||
Analytics | |||||
Authentication | |||||
Cloud Firestore | (باستثناء الثبات) |
(باستثناء الثبات إذا كان الإصدار 10 من نظام التشغيل iOS أو إصدار أقدم) |
|||
Cloud Functions | |||||
Firebase عملية تثبيت | |||||
Cloud Messaging | (الإصدار 17 من Edge أو الإصدارات اللاحقة، باستثناء الأجهزة الجوّالة) |
||||
Cloud Storage | |||||
Performance Monitoring | |||||
Realtime Database | |||||
Remote Config | |||||
Vertex AI in Firebase |
البيئات الأخرى
منتج Firebase | React Native | Node.js (18 عامًا أو أكثر) | إضافات Chrome |
كوردوفا |
---|---|---|---|---|
App Check | (باستخدام موفِّر مخصّص لإجراء عملية إثبات ملكية الجهاز الأصلي) |
(باستخدام موفِّر مخصّص) |
||
Analytics | ||||
Authentication | (راجِع ملاحظة) |
(راجِع ملاحظة) |
(راجِع ملاحظة) |
(راجِع ملاحظة) |
Cloud Firestore | (باستثناء الثبات) |
(باستثناء الثبات) |
||
Cloud Functions | ||||
Data Connect | ||||
Firebase عملية تثبيت | ||||
Cloud Messaging | ||||
Cloud Storage | (باستثناء عمليات التحميل) |
|||
Performance Monitoring | ||||
Realtime Database | ||||
Remote Config | ||||
Vertex AI in Firebase |
تعويض الميزات المفقودة من المتصفحات
تم تصميم حزمة SDK لنظام التشغيل Firebase JavaScript استنادًا إلى أحدث معايير منصة الويب. لا تتيح بعض المتصفحات القديمة وبيئات JavaScript جميع الميزات التي تتطلّبها Firebase. إذا كان عليك توفير هذه المتصفّحات/البيئات، يجب تحميل مكونات polyfill وفقًا لذلك.
تحدِّد الأقسام أدناه معظم مجموعات polyfill التي قد تحتاج إليها.
الإضافات المطلوبة لpolyfill
البيئات | العناصر القابلة للتضمين |
---|---|
الإصدار 7 و8 و9 من Safari | الإصدار الثابت من اللغة الإسبانية |
عدد العقد أقل من 10 | الإصدار الثابت من اللغة الإسبانية |
الإضافات الاختيارية لpolyfill
البيئات | العناصر القابلة للتضمين | منتجات Firebase |
---|---|---|
|
fetch |
|
|
fetch |
|
|
base-64 |
|
الإضافات المتوافقة مع الإصدارات القديمة المقترَحة
العناصر القابلة للتضمين | الترخيص |
---|---|
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، لا داعي للقلق بشأن مكونات polyfills الدقيقة المطلوب تضمينها. بدلاً من ذلك، يمكنك تحديد الحد الأدنى لمتطلبات بيئة المتصفّح التي تحتاج إلى توفيرها. بعد ذلك، يضيف Babel وحدات polyfill اللازمة نيابةً عنك. يضمن Babel استيفاء متطلبات توافق المتصفّح دائمًا، حتى إذا بدأ Firebase أو رمزك البرمجي باستخدام ميزات ES الجديدة.
يحتوي @babel/preset-env على معلومات detailed
حول خيارات الإعداد المتاحة لتحديد بيئة
استهداف (الخيار targets
) وإضافة polyfills (الخيار useBuiltIns
).
الخيار 2: (غير مستحسن) إضافة polyfills يدويًا
يمكنك إضافة polyfills يدويًا باستخدام مكتبات polyfill المفضّلة لديك (مثل
core-js
).
import 'core-js/stable'
import 'cross-fetch/polyfill';
توفّر core-js
أيضًا
ملفًا شاملاً لعناصر الربط
يمكنك تضمينه مباشرةً في صفحة HTML.
يمكن أن يكون هذا الخيار طريقة ملائمة لإدارة polyfills إذا كنت لا تستخدم Babel. ومع ذلك، لا ننصح باستخدام هذا الخيار الشامل في التطبيقات المخصّصة للإصدار العلني لأنّه سيتضمّن على الأرجح مكونات polyfill غير ضرورية، ما يزيد من ملف برمجي الصفحة وبالتالي وقت تحميلها.