Catch up on everything we announced at this year's Firebase Summit. Learn more

با Cloud Functions محتوای پویا و ریز سرویس های میزبان را ارائه دهید

عملکردهای ابری را با میزبانی Firebase جفت کنید تا محتوای پویای شما تولید و ارائه شود یا API های REST به عنوان سرویس های کوچک ایجاد شود.

توابع Cloud برای فایربیس شما اجازه می دهد به طور خودکار کد باطن در پاسخ به درخواستهای HTTPS را اجرا کنید. کد شما در ابر Google ذخیره می شود و در محیط مدیریت شده اجرا می شود. نیازی به مدیریت و مقیاس بندی سرورهای خود ندارید.

برای موارد استفاده به عنوان مثال و نمونه برای توابع ابر یکپارچه با Firebase میزبانی وب، ما مراجعه نمای کلی بدون سرور .

عملکردهای ابر را به میزبانی Firebase وصل کنید

این بخش یک مثال راه حل برای اتصال یک عملکرد به میزبانی Firebase ارائه می دهد.

توجه داشته باشید که برای بهبود عملکرد خدمت محتوای پویا، شما می توانید به صورت اختیاری لحن خود را تنظیمات کش .

مرحله 1: در تنظیم عملکردهای ابر

  1. مطمئن شوید که آخرین نسخه Firebase CLI را دارید و میزبانی Firebase را راه اندازی کرده اید.

    برای راهنمایی بیشتر در مورد نصب CLI و مقدار دهی اولیه میزبانی وب، را ببینید مطلع راهنمای شروع برای میزبانی .

  2. مطمئن شوید که عملکردهای Cloud را تنظیم کرده اید:

    • اگر شما در حال حاضر در تنظیم عملکردهای ابر، شما می توانید اقدام به مرحله 2: ایجاد و آزمایش HTTPS تابع .

    • اگر شما تنظیم نشده تا توابع ابر:

      1. با اجرای دستور زیر از ریشه فهرست پروژه خود ، عملکردهای ابری را آغاز کنید:

        firebase init functions
      2. وقتی از شما خواسته شد ، جاوا اسکریپت را انتخاب کنید (این مثال از JS استفاده می کند).

      3. بررسی کنید که شما یک functions دایرکتوری در دایرکتوری پروژه های محلی خود را (ایجاد شده توسط فرمان فایربیس شما فقط فرار). این functions دایرکتوری است که در آن کد برای توابع ابر زندگی می کند.

مرحله 2: ایجاد و تست یک تابع HTTPS برای سایت میزبانی وب خود را

  1. گسترش /functions/index.js در ویرایشگر مورد علاقه خود را.

  2. کد زیر را جایگزین محتویات فایل کنید.

    این کد یک تابع HTTPS (با نام bigben ) که پاسخ به درخواست های HTTPS با BONG برای هر ساعت از روز، درست مانند یک ساعت.

    const functions = require('firebase-functions');
    
    exports.bigben = functions.https.onRequest((req, res) => {
      const hours = (new Date().getHours() % 12) + 1  // London is UTC + 1hr;
      res.status(200).send(`<!doctype html>
        <head>
          <title>Time</title>
        </head>
        <body>
          ${'BONG '.repeat(hours)}
        </body>
      </html>`);
    });
    
  3. تست توابع خود را به صورت محلی با استفاده از فایربیس محلی شبیه ساز سوئیت .

    1. از ریشه فهرست پروژه محلی خود ، دستور زیر را اجرا کنید:

      firebase emulators:start
    2. دسترسی به تابع از طریق URL محلی بازگردانده شده توسط CLI، برای مثال: http://localhost:5001/ PROJECT_ID /us-central1/bigben .

بازدید از توابع مدارک ابر برای کسب اطلاعات بیشتر در مورد درخواستهای HTTPS.

گام بعدی شما از طریق پیاده چگونه برای دسترسی به این تابع HTTPS از میزبانی URL فایربیس طوری که می تواند محتوای پویا برای سایت فایربیس میزبانی خود را تولید کند.

مرحله 3: مستقیم HTTPS درخواست به عملکرد خود را

با قوانین بازنویسی ، شما می توانید درخواست های که مطابقت الگوهای خاص برای یک مقصد واحد به طور مستقیم. مراحل زیر به شما نشان دهد چگونه برای هدایت تمام درخواست ها از مسیر ../bigben در سایت میزبانی وب خود را برای اجرای bigben تابع.

  1. خود را باز firebase.json فایل .

  2. اضافه کردن زیر rewrite پیکربندی تحت hosting بخش:

    "hosting": {
      // ...
    
      // Add the "rewrites" attribute within "hosting"
      "rewrites": [ {
        "source": "/bigben",
        "function": "bigben"
      } ]
    }
    
  3. با آزمایش مجدد با شبیه سازهای Firebase ، تأیید کنید که تغییر مسیر شما مطابق انتظار کار می کند.

    1. از ریشه فهرست پروژه محلی خود ، دستور زیر را اجرا کنید:

      firebase emulators:start
    2. بازدید از URL محلی به میزبانی برای سایت شما توسط CLI بازگشت (معمولا localhost:5000 )، اما اضافه URL با bigben ، مانند: http://localhost:5000/bigben

  4. عملکرد خود و عملکرد آن برای سایت خود را مرور کنید. برای شبیه سازی این تکرارها از شبیه سازهای Firebase استفاده کنید.

برای بازدید از صفحه تنظیمات میزبانی جزئیات بیشتر در مورد قوانین بازنویسی . شما همچنین می توانید در مورد یادگیری به ترتیب اولویت پاسخ از پیکربندی های مختلف میزبانی وب.

توجه داشته باشید که برای بهبود عملکرد خدمت محتوای پویا، شما می توانید به صورت اختیاری لحن خود را تنظیمات کش .

گام 4: استقرار تابع خود را

هنگامی که عملکرد شما در حال کار به عنوان در شبیه ساز مورد نظر، شما می توانید به استقرار، تست، و در حال اجرا آن را با منابع پروژه واقعی را ادامه دهید. این زمان خوبی به نظر گزینه های تنظیم زمان اجرا به است رفتار پوسته پوسته شدن کنترل برای توابع در حال اجرا در تولید.

  1. عملکرد خود و محتوای میزبانی خود را مستقر کرده و با اجرای دستور زیر از ریشه فهرست پروژه محلی خود ، به سایت خود پیکربندی کنید:

    firebase deploy --only functions,hosting
  2. در نشانی های اینترنتی زیر به سایت زنده و عملکرد خود دسترسی داشته باشید:

    • زیر دامنه های Firebase شما:
      PROJECT_ID .web.app/bigben و PROJECT_ID .firebaseapp.com/bigben

    • هر متصل دامنههای سفارشی :
      CUSTOM_DOMAIN /bigben

از چارچوب وب استفاده کنید

شما می توانید قاب های وب استفاده کنید، مانند اکسپرس جیاس برای خدمت به محتوای پویا برنامه شما و ارسال برنامه های وب پیچیده را به راحتی بیشتر، در توابع ابر.

بخش زیر یک مثال کاربردی برای استفاده از Express.js با Firebase Hosting و Cloud Functions ارائه می دهد.

  1. نصب اکسپرس جیاس در پروژه های محلی خود را با اجرای دستور زیر را از خود functions دایرکتوری:

    npm install express --save
  2. باز خود را /functions/index.js فایل، پس از آن واردات و مقداردهی اولیه اکسپرس جیاس:

    const functions = require('firebase-functions');
    const express = require('express');
    const app = express();
    
  3. دو نقطه پایانی زیر را اضافه کنید:

    1. اضافه کردن اولین نقطه پایانی برای خدمت به شاخص وب سایت ما در / .

      app.get('/', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.send(`
          <!doctype html>
          <head>
            <title>Time</title>
            <link rel="stylesheet" href="/style.css">
            <script src="/script.js"></script>
          </head>
          <body>
            <p>In London, the clock strikes:
              <span id="bongs">${'BONG '.repeat(hours)}</span></p>
            <button onClick="refresh(this)">Refresh</button>
          </body>
        </html>`);
      });
      
    2. و نقطه پایانی دیگر برای بازگشت به BONG تعداد به عنوان یک API، در قالب JSON، تحت /api :

      app.get('/api', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.json({bongs: 'BONG '.repeat(hours)});
      });
      
  4. برنامه Express.js را به عنوان یک عملکرد HTTPS صادر کنید:

    exports.app = functions.https.onRequest(app);
    
  5. در خود firebase.json فایل، مستقیم تمام درخواست ها به app تابع. این اجازه می دهد تا بازنویسی اکسپرس جیاس برای خدمت به subpath مختلف است که ما پیکربندی (در این مثال، / و /api ).

    {
     "hosting": {
       // ...
    
       // Add the "rewrites" attribute within "hosting"
       "rewrites": [ {
         "source": "**",
         "function": "app"
       } ]
     }
    }
    

میان افزار را اضافه کنید

در ادامه مثال ما، در حال حاضر که شما با استفاده از اکسپرس جیاس، شما می توانید اضافه اکسپرس جیاس میان در راه معمولی است. به عنوان مثال، شما می توانید فعال CORS درخواست در نقاط پایانی ما است.

  1. نصب cors با اجرای دستور زیر از Middleware:

    npm install --save cors
  2. باز خود را /functions/index.js فایل، و سپس اضافه کردن cors به برنامه اکسپرس جیاس خود را، مانند:

    const cors = require('cors')({origin: true});
    app.use(cors);
    

بازدید از توابع مدارک ابر برای کسب اطلاعات بیشتر در مورد استفاده از فایربیس با برنامه های اکسپرس و ماژول های میان.

مراحل بعدی