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

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

تتوافق حزمة تطوير البرامج (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
  • ‫Safari < 10.1
  • الإصدارات الأقدم من iOS 10.3
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Performance Monitoring
  • العقدة < 18
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Cloud Storage
  • React Native وExpo
base-64
  • Cloud Storage

ملفات 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. ومع ذلك، لا ننصح باستخدام هذا الخيار الشامل للتطبيقات المخصّصة للإنتاج لأنّه من المحتمل أن يتضمّن عمليات تعويض غير ضرورية، ما يزيد من حجم الصفحة وبالتالي من وقت تحميلها.