البيئات المتوافقة مع حزمة تطوير البرامج (SDK) لمنصّة Firebase JavaScript

البيئات المتوافقة

تتوافق حزمة Firebase JavaScript SDK رسميًا مع البيئات التالية.

المتصفحات

منتج Firebase Edge Firefox Chrome ‫Safari على أجهزة iOS Safari
Firebase AI Logic 1
Analytics
App Check
Authentication
Cloud Firestore
(باستثناء
البيانات الثابتة)

(باستثناء
البيانات الثابتة
إذا كان إصدار iOS أقل من 10)
Cloud Functions
Firebase عمليات التثبيت
Cloud Messaging
(الإصدار 17 من Edge والإصدارات اللاحقة، باستثناء الأجهزة الجوّالة)
Cloud Storage
SQL Connect
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic كان اسم ‫Vertex AI in Firebase سابقًا "

بيئات أخرى

منتج Firebase React Native Node.js (الإصدار 18 والإصدارات اللاحقة) إضافات Chrome
كوردوفا
Firebase AI Logic 1
App Check
(باستخدام موفِّر مخصّص لإجراء إثبات صحة الجهاز الأصلي)

(باستخدام موفِّر مخصّص)
Analytics
Authentication
(راجِع الملاحظة)

(راجِع الملاحظة)

(راجِع الملاحظة)

(راجِع الملاحظة)
Cloud Firestore
(باستثناء
البيانات الثابتة)

(باستثناء
البيانات الثابتة)
Cloud Functions
SQL Connect
Firebase عمليات التثبيت
Cloud Messaging
Cloud Storage
(باستثناء
عمليات التحميل)
Performance Monitoring
Realtime Database
Remote Config

1 Firebase AI Logic كان اسم ‫Vertex AI in Firebase سابقًا "

تعويض الميزات المفقودة من المتصفحات

تم إنشاء حزمة Firebase JavaScript SDK استنادًا إلى أحدث معايير منصة الويب. لا تتوافق بعض المتصفحات القديمة وبيئات JavaScript مع جميع الميزات التي تتطلبها Firebase. إذا كان عليك توفير الدعم لهذه المتصفحات أو البيئات، عليك تحميل تعويض الميزات المفقودة من المتصفحات وفقًا لذلك.

تحدّد الأقسام أدناه معظم تعويض الميزات المفقودة من المتصفحات التي قد تحتاج إليها.

تعويض الميزات المفقودة من المتصفحات المطلوبة

البيئات تعويض الميزات المفقودة من المتصفحات
‫Safari 7 و8 و9 ES ثابت
Node < 10 ES ثابت

تعويض الميزات المفقودة من المتصفحات الاختيارية

البيئات تعويض الميزات المفقودة من المتصفحات منتجات Firebase
  • ‫Safari < 10.1
  • ‫iOS < 10.3
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Performance Monitoring
  • ‫Node < 18
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Cloud Storage
  • ‫React Native وExpo
base-64
  • Cloud Storage

تعويض الميزات المفقودة من المتصفحات المقترَحة

تعويض الميزات المفقودة من المتصفحات الترخيص
ES ثابت MIT
fetch \- `cross-fetch` - الأفضل للمتصفحات القديمة MIT
fetch - `undici` - الأفضل لـ Node.js MIT
base-64 MIT

إعداد تعويض الميزات المفقودة من المتصفحات المطلوبة لـ 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;
}

إضافة تعويض الميزات المفقودة من المتصفحات في تطبيقك

الخيار 1: (مستحسَن) استخدام أداة تجميع متكاملة مع Babel

إذا كنت تستخدم أداة تجميع، يمكنك دمجها مع Babel و @babel/preset-env للحصول على تعويض الميزات المفقودة من المتصفحات.

استخدِم دليل الإعداد التفاعلي في Babel للتعرّف على كيفية دمج Babel مع أداة التجميع.

باستخدام Babel، لن تحتاج إلى تحديد تعويض الميزات المفقودة من المتصفحات التي يجب تضمينها. بدلاً من ذلك، يمكنك تحديد الحد الأدنى لبيئات المتصفحات التي عليك توفير الدعم لها. بعد ذلك، يضيف Babel تعويض الميزات المفقودة من المتصفحات اللازمة لك. يضمن Babel تلبية متطلباتك المتعلقة بتوافق المتصفحات دائمًا، حتى إذا بدأت Firebase أو الرمز البرمجي الخاص بك في استخدام ميزات ES الجديدة.

يحتوي @babel/preset-env على معلومات مفصّلة حول خيارات الإعداد المتاحة لتحديد البيئات المستهدَفة (الخيار targets) وإضافة تعويض الميزات المفقودة من المتصفحات (الخيار useBuiltIns).

الخيار 2: (غير مستحسَن) إضافة تعويض الميزات المفقودة من المتصفحات يدويًا

يمكنك إضافة تعويض الميزات المفقودة من المتصفحات يدويًا باستخدام مكتبات تعويض الميزات المفقودة من المتصفحات المفضّلة لديك (مثل core-js).

import 'core-js/stable'
import 'cross-fetch/polyfill';

core-js توفّر أيضًا ملفًا شاملاً لتعويض الميزات المفقودة من المتصفحات يمكنك تضمينه مباشرةً في صفحة HTML.

يمكن أن يكون هذا الخيار طريقة مناسبة لإدارة تعويض الميزات المفقودة من المتصفحات إذا كنت لا تستخدم Babel. ومع ذلك، لا ننصح باستخدام هذا الخيار الشامل للتطبيقات المخصّصة للإنتاج للتطبيقات لأنّه من المحتمل أن يتضمّن polyfills غير الضرورية، ما يزيد من حجم الصفحة وبالتالي وقت تحميل الصفحة.