Express.js . के साथ अन्य ढांचे को एकीकृत करें

कुछ अतिरिक्त कॉन्फ़िगरेशन के साथ, आप एंगुलर और नेक्स्ट.जेएस के अलावा अन्य फ्रेमवर्क में एकीकरण समर्थन बढ़ाने के लिए बुनियादी फ्रेमवर्क-जागरूक सीएलआई कार्यक्षमता का निर्माण कर सकते हैं।

शुरू करने से पहले

इससे पहले कि आप अपने ऐप को फायरबेस पर तैनात करना शुरू करें, निम्नलिखित आवश्यकताओं और विकल्पों की समीक्षा करें:

  • फायरबेस सीएलआई संस्करण 12.1.0 या बाद का संस्करण। अपनी पसंदीदा विधि का उपयोग करके सीएलआई स्थापित करना सुनिश्चित करें।
  • वैकल्पिक: आपके फायरबेस प्रोजेक्ट पर बिलिंग सक्षम है (यदि आप एसएसआर का उपयोग करने की योजना बना रहे हैं तो आवश्यक है)

फायरबेस आरंभ करें

आरंभ करने के लिए, अपने फ्रेमवर्क प्रोजेक्ट के लिए फायरबेस प्रारंभ करें। किसी नए प्रोजेक्ट के लिए फायरबेस सीएलआई का उपयोग करें, या किसी मौजूदा प्रोजेक्ट के लिए firebase.json संशोधित करें।

एक नया प्रोजेक्ट आरंभ करें

  1. फायरबेस सीएलआई में, वेब फ्रेमवर्क पूर्वावलोकन सक्षम करें:
    firebase experiments:enable webframeworks
  2. सीएलआई से इनिशियलाइज़ेशन कमांड चलाएँ और फिर संकेतों का पालन करें:

    firebase init hosting

  3. "क्या आप वेब फ्रेमवर्क का उपयोग करना चाहते हैं? (प्रयोगात्मक)" का उत्तर हाँ में दें

  4. अपनी होस्टिंग स्रोत निर्देशिका चुनें; यह एक मौजूदा वेब ऐप हो सकता है.

  5. यदि संकेत दिया जाए, तो Express.js/custom चुनें

किसी मौजूदा प्रोजेक्ट को प्रारंभ करें

public विकल्प के बजाय source विकल्प के लिए अपने होस्टिंग कॉन्फ़िगरेशन को firebase.json में बदलें। उदाहरण के लिए:

{
  "hosting": {
    "source": "./path-to-your-express-directory"
  }
}

स्थिर सामग्री परोसें

स्थिर सामग्री तैनात करने से पहले, आपको अपना एप्लिकेशन कॉन्फ़िगर करना होगा।

कॉन्फ़िगर

यह जानने के लिए कि आपके एप्लिकेशन को कैसे तैनात किया जाए, फायरबेस सीएलआई को आपका ऐप बनाने और यह जानने में सक्षम होना चाहिए कि आपका टूलींग होस्टिंग के लिए निर्धारित संपत्तियों को कहां रखता है। यह package.json में npm बिल्ड स्क्रिप्ट और CJS निर्देशिका निर्देश के साथ पूरा किया गया है।

निम्नलिखित package.json दिया गया है:

{
    "name": "express-app",
    "version": "0.0.0",
    "scripts": {
        "build": "spack",
        "static": "cp static/* dist",
        "prerender": "ts-node prerender.ts"
    },
    …
}

फायरबेस सीएलआई केवल आपकी बिल्ड स्क्रिप्ट को कॉल करता है, इसलिए आपको यह सुनिश्चित करना होगा कि आपकी बिल्ड स्क्रिप्ट संपूर्ण है।

{
    "name": "express-app",
    "version": "0.0.0",
    "scripts": {
        "build": "spack && npm run static && npm run prerender",
        "static": "cp static/* dist",
        "prerender": "ts-node prerender.ts"
    },
    …
}

यदि आपका फ्रेमवर्क आउट ऑफ द बॉक्स प्री-रेंडरिंग का समर्थन नहीं करता है, तो रेंडरट्रॉन जैसे टूल का उपयोग करने पर विचार करें। रेंडरट्रॉन आपको अपने ऐप के स्थानीय इंस्टेंस के विरुद्ध हेडलेस क्रोम अनुरोध करने की अनुमति देगा, ताकि आप परिणामी HTML को होस्टिंग पर परोसने के लिए सहेज सकें।

अंत में, विभिन्न ढाँचे और निर्माण उपकरण अपनी कलाकृतियों को विभिन्न स्थानों पर संग्रहीत करते हैं। सीएलआई को यह बताने के लिए directories.serve उपयोग करें कि आपकी बिल्ड स्क्रिप्ट परिणामी कलाकृतियों को कहां आउटपुट कर रही है:

{
    "name": "express-app",
    "version": "0.0.0",
    "scripts": {
        "build": "spack && npm run static && npm run prerender",
        "static": "cp static/* dist",
        "prerender": "ts-node prerender.ts"
    },
    "directories": {
        "serve": "dist"
    },
    …
}

तैनात करना

अपने ऐप को कॉन्फ़िगर करने के बाद, आप मानक परिनियोजन कमांड के साथ स्थिर सामग्री परोस सकते हैं:

firebase deploy

गतिशील सामग्री परोसें

फायरबेस के लिए क्लाउड फ़ंक्शंस पर अपने एक्सप्रेस ऐप की सेवा के लिए, सुनिश्चित करें कि आपका एक्सप्रेस ऐप (या एक्सप्रेस-स्टाइल यूआरएल हैंडलर) इस तरह से निर्यात किया गया है कि फायरबेस आपकी लाइब्रेरी एनपीएम पैक होने के बाद इसे ढूंढ सके।

इसे पूरा करने के लिए, सुनिश्चित करें कि आपके files निर्देश में सर्वर के लिए आवश्यक सभी चीजें शामिल हैं, और आपका मुख्य प्रवेश बिंदु package.json में सही ढंग से सेट है:

{
    "name": "express-app",
    "version": "0.0.0",
    "scripts": {
        "build": "spack && npm run static && npm run prerender",
        "static": "cp static/* dist",
        "prerender": "ts-node tools/prerender.ts"
    },
    "directories": {
        "serve": "dist"
    },
    "files": ["dist", "server.js"],
    "main": "server.js",
    ...
}

app नामक फ़ंक्शन से अपना एक्सप्रेस ऐप निर्यात करें:

// server.js
export function app() {
  const server = express();
   …
   return server;
}

या यदि आप एक एक्सप्रेस-शैली यूआरएल हैंडलर निर्यात करना चाहते हैं, तो इसे handle नाम दें:

export function handle(req, res) {
   res.send(‘hello world’);
}

तैनात करना

firebase deploy

यह आपकी स्थिर सामग्री को फायरबेस होस्टिंग पर तैनात करता है और फायरबेस को फायरबेस के लिए क्लाउड फ़ंक्शंस पर होस्ट किए गए आपके एक्सप्रेस ऐप पर वापस आने की अनुमति देता है।

वैकल्पिक: फायरबेस प्रमाणीकरण के साथ एकीकृत करें

वेब फ्रेमवर्क-अवेयर फ़ायरबेस परिनियोजन टूलिंग स्वचालित रूप से कुकीज़ का उपयोग करके क्लाइंट और सर्वर स्थिति को सिंक में रखेगी। प्रमाणीकरण संदर्भ तक पहुंचने के लिए, एक्सप्रेस res.locals ऑब्जेक्ट में वैकल्पिक रूप से एक प्रमाणित फायरबेस ऐप इंस्टेंस ( firebaseApp ) और वर्तमान में साइन इन उपयोगकर्ता ( currentUser ) शामिल है।