مشاركة عبر


التشغيل السريع: إنشاء تطبيق وحدة تحكم Node.js باستخدام Azure App Configuration

في هذا التشغيل السريع، يمكنك استخدام Azure App Configuration لمركزية التخزين وإدارة إعدادات التطبيق باستخدام مكتبة عميل موفر JavaScript لتكوين تطبيق Azure.

تم إنشاء موفر تكوين التطبيق ل JavaScript أعلى Azure SDK ل JavaScript وتم تصميمه ليكون أسهل في الاستخدام مع ميزات أكثر ثراء. يتيح الوصول إلى قيم المفاتيح في تكوين التطبيق ككائن Map . يوفر ميزات مثل تكوين التكوين من تسميات متعددة، وقص بادئة المفتاح، والدقة التلقائية لمراجع Key Vault، وغيرها الكثير. على سبيل المثال، يوضح هذا البرنامج التعليمي كيفية استخدام موفر JavaScript في تطبيق Node.js.

المتطلبات الأساسية

إضافة قيم المفاتيح

أضف قيم المفاتيح التالية إلى متجر App Configuration. لمزيد من المعلومات حول كيفية إضافة قيم المفاتيح إلى مخزن باستخدام مدخل Microsoft Azure أو CLI، انتقل إلى إنشاء قيمة مفتاح.

مفتاح القيمة نوع المحتوى
رسالة رسالة من تكوين تطبيق Azure اتركه فارغًا
app.greeting Hello, world اتركه فارغًا
app.json {"myKey":"myValue"} application/json

إنشاء تطبيق وحدة تحكم Node.js

في هذا البرنامج التعليمي، يمكنك إنشاء تطبيق وحدة تحكم Node.js وتحميل البيانات من متجر App Configuration.

  1. إنشاء دليل جديد للمشروع المسمى app-configuration-quickstart.

    mkdir app-configuration-quickstart
    
  2. التبديل إلى دليل "app-configuration-quickstart" الذي تم إنشاؤه حديثًا.

    cd app-configuration-quickstart
    
  3. قم بتثبيت موفر Azure App Configuration باستخدام npm install الأمر .

    npm install @azure/app-configuration-provider
    

الاتصال بمخزن تكوين التطبيق

توضح الأمثلة التالية كيفية استرداد بيانات التكوين من Azure App Configuration واستخدامها في التطبيق الخاص بك. بشكل افتراضي، يتم تحميل قيم المفاتيح ككائن Map ، ما يسمح لك بالوصول إلى كل قيمة مفتاح باستخدام اسم المفتاح الكامل الخاص بها. ومع ذلك، إذا كان التطبيق الخاص بك يستخدم كائنات التكوين، يمكنك استخدام constructConfigurationObject واجهة برمجة تطبيقات المساعد التي تنشئ كائن تكوين استنادا إلى قيم المفاتيح المحملة من تكوين تطبيق Azure.

أنشئ ملفا باسم app.js في دليل app-configuration-quickstart وانسخ التعليمات البرمجية من كل عينة.

نموذج 1: تحميل قيم المفاتيح باستخدام محدد افتراضي

في هذا النموذج، يمكنك الاتصال بتكوين تطبيق Azure وتحميل قيم المفاتيح دون تحديد خيارات متقدمة. بشكل افتراضي، يقوم بتحميل كافة قيم المفاتيح بدون تسمية. يمكنك الاتصال بمخزن App Configuration باستخدام معرف Microsoft Entra (مستحسن) أو سلسلة الاتصال.

يمكنك استخدام DefaultAzureCredential للمصادقة على متجر App Configuration. اتبع الإرشادات لتعيين بيانات الاعتماد الخاصة بك دور قارئ بيانات تكوين التطبيق. تأكد من السماح بوقت كاف للإذن للنشر قبل تشغيل التطبيق الخاص بك.

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 1: Load key-values with default selector");

    // Connect to Azure App Configuration using a token credential and load all key-values with null label.
    const settings = await load(endpoint, credential);

    console.log("---Consume configuration as a Map---");
    // Find the key "message" and print its value.
    console.log('settings.get("message"):', settings.get("message"));           // settings.get("message"): Message from Azure App Configuration
    // Find the key "app.greeting" and print its value.
    console.log('settings.get("app.greeting"):', settings.get("app.greeting")); // settings.get("app.greeting"): Hello World
    // Find the key "app.json" whose value is an object.
    console.log('settings.get("app.json"):', settings.get("app.json"));         // settings.get("app.json"): { myKey: 'myValue' }

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values, by default "." is used to separate hierarchical keys.
    const config = settings.constructConfigurationObject();
    // Use dot-notation to access configuration
    console.log("config.message:", config.message);             // config.message: Message from Azure App Configuration
    console.log("config.app.greeting:", config.app.greeting);   // config.app.greeting: Hello World
    console.log("config.app.json:", config.app.json);           // config.app.json: { myKey: 'myValue' }
}

run().catch(console.error);

النموذج 2: تحميل قيم مفاتيح محددة باستخدام المحددات

في هذا النموذج، يمكنك تحميل مجموعة فرعية من قيم المفاتيح عن طريق تحديد selectors الخيار . يتم تحميل المفاتيح التي تبدأ ب "التطبيق". لاحظ أنه يمكنك تحديد محددات متعددة استنادا إلى احتياجاتك، لكل منها keyFilter خصائص و labelFilter .

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 2: Load specific key-values using selectors");

    // Load a subset of keys starting with "app." prefix.
    const settings = await load(endpoint, credential, {
        selectors: [{
            keyFilter: "app.*"
        }],
    });

    console.log("---Consume configuration as a Map---");
    // The key "message" is not loaded as it does not start with "app."
    console.log('settings.has("message"):', settings.has("message"));           // settings.has("message"): false
    // The key "app.greeting" is loaded
    console.log('settings.has("app.greeting"):', settings.has("app.greeting")); // settings.has("app.greeting"): true
    // The key "app.json" is loaded
    console.log('settings.has("app.json"):', settings.has("app.json"));         // settings.has("app.json"): true

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values
    const config = settings.constructConfigurationObject({ separator: "." });
    // Use dot-notation to access configuration
    console.log("config.message:", config.message);         // config.message: undefined
    console.log("config.app.greeting:", config.app.greeting);   // config.app.greeting: Hello World
    console.log("config.app.json:", config.app.json);           // config.app.json: { myKey: 'myValue' }
}

run().catch(console.error);

نموذج 3: تحميل قيم المفاتيح وقص البادئة من المفاتيح

في هذا النموذج، يمكنك تحميل قيم المفاتيح مع خيار trimKeyPrefixes. بعد تحميل قيم المفاتيح، يتم اقتطاع البادئة "app". من جميع المفاتيح. يكون هذا مفيدا عندما تريد تحميل التكوينات الخاصة بالتطبيق الخاص بك عن طريق التصفية إلى بادئة مفتاح معينة، ولكنك لا تريد أن تحمل التعليمات البرمجية الخاصة بك البادئة في كل مرة تصل فيها إلى التكوين.

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 3: Load key-values and trim prefix from keys");

    // Load all key-values with no label, and trim "app." prefix from all keys.
    const settings = await load(endpoint, credential, {
        selectors: [{
            keyFilter: "app.*"
        }],
        trimKeyPrefixes: ["app."]
    });

    console.log("---Consume configuration as a Map---");
    // The original key "app.greeting" is trimmed as "greeting".
    console.log('settings.get("greeting"):', settings.get("greeting")); // settings.get("greeting"): Hello World
    // The original key "app.json" is trimmed as "json".
    console.log('settings.get("json"):', settings.get("json"));         // settings.get("json"): { myKey: 'myValue' }

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values with trimmed keys.
    const config = settings.constructConfigurationObject();
    // Use dot-notation to access configuration
    console.log("config.greeting:", config.greeting);   // config.greeting: Hello World
    console.log("config.json:", config.json);           // config.json: { myKey: 'myValue' }
}

run()

شغّل التطبيق

  1. تعيين متغير البيئة.

    قم بتعيين متغير البيئة المسمى AZURE_APPCONFIG_ENDPOINT إلى نقطة نهاية متجر App Configuration الموجود ضمن نظرة عامة على متجرك في مدخل Microsoft Azure.

    إذا كنت تستخدم موجه الأوامر Windows، فشغل الأمر التالي، ثم أعد تشغيل موجه الأوامر للسماح للتغيير بتنفيذ الأمر:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    إذا كنت تستخدم PowerShell، فقم بتشغيل الأمر التالي:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    إذا كنت تستخدم macOS أو Linux، فقم بإجراء الأمر التالي:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. بعد تعيين متغير البيئة بشكل صحيح، قم بتشغيل الأمر التالي لتشغيل التطبيق محليا:

    node app.js
    

    يجب أن تشاهد الإخراج التالي لكل عينة:

    عينة 1

    Sample 1: Load key-values with default selector
    ---Consume configuration as a Map---
    settings.get("message"): Message from Azure App Configuration
    settings.get("app.greeting"): Hello World
    settings.get("app.json"): { myKey: 'myValue' }
    ---Consume configuration as an object---
    config.message: Message from Azure App Configuration
    config.app.greeting: Hello World
    config.app.json: { myKey: 'myValue' }
    

    عينة 2

    Sample 2: Load specific key-values using selectors
    ---Consume configuration as a Map---
    settings.has("message"): false
    settings.has("app.greeting"): true
    settings.has("app.json"): true
    ---Consume configuration as an object---
    config.message: undefined
    config.app.greeting: Hello World
    config.app.json: { myKey: 'myValue' }
    

    عينة 3

    Sample 3: Load key-values and trim prefix from keys
    ---Consume configuration as a Map---
    settings.get("greeting"): Hello World
    settings.get("json"): { myKey: 'myValue' }
    ---Consume configuration as an object---
    config.greeting: Hello World
    config.json: { myKey: 'myValue' }
    

تنظيف الموارد

إذا كنت لا تريد مواصلة استخدام الموارد التي تم إنشاؤها في هذه المقالة، يوصى بحذف مجموعة الموارد التي أنشأتها هنا لتجنب الرسوم.

هام

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

  1. سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
  2. في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

الخطوات التالية

في هذا التشغيل السريع، قمت بإنشاء متجر App Configuration جديد وتعلمت كيفية الوصول إلى قيم المفاتيح باستخدام موفر JavaScript لتكوين التطبيق في تطبيق Node.js. لمعرفة كيفية تكوين تطبيقك لتحديث إعدادات التكوين ديناميكيا، تابع إلى البرنامج التعليمي التالي.

للتشغيل الكامل للميزة لمكتبة موفر تكوين JavaScript، تابع إلى المستند التالي.