رموز QR مضحكة ، أليس كذلك؟ نحن نحبهم ، ثم نكرههم ، ثم نحبهم مرة أخرى. على أي حال ، لقد ظهرت مرة أخرى مؤخرًا وجعلني أفكر في كيفية صنعها. هناك مثل مولدات رمز الاستجابة السريعة gazillion هناك ، لكن قل إنه شيء عليك القيام به على موقع الويب الخاص بك. هذه الحزمة تستطيع أن تفعل ذلك. لكنه يزن أيضًا 180 كيلو بايت لكل ما يحتاجه لإنشاء الأشياء. لن ترغب في تقديم كل ذلك مع بقية البرامج النصية الخاصة بك.
الآن ، أنا جديد نسبيًا على مفهوم وظائف السحابة ، لكنني سمعت أن هذه هي ركبتي النحل لشيء مثل هذا تمامًا. بهذه الطريقة ، تعيش الوظيفة في مكان ما على خادم يمكن استدعاؤه عند الحاجة. Sorta مثل API قليلا لتشغيل الوظيفة.
يقدم بعض المضيفين نوعًا من ميزة وظيفة السحابة. تصادف أن DigitalOcean واحدة منهم! ومثل Droplets ، من السهل جدًا نشر الوظائف.
قم بإنشاء مجلد وظائف محليًا
DigitalOcean لديها CLI مع أمر من شأنه أن يدعم الأشياء لنا ، لذلك cd
أينما تريد إعداد الأشياء وتشغيلها:
doctl serverless init --language js qr-generator
لاحظ أن اللغة معلنة صراحة. تدعم وظائف DigitalOcean أيضًا PHP و Python.
نحصل على مشروع نظيف لطيف يسمى qr-generator
مع /packages
المجلد الذي يحتوي على جميع وظائف المشروع. هناك دالة نموذجية هناك ، لكن يمكننا التغاضي عنها في الوقت الحالي وإنشاء ملف qr
المجلد المجاور له:
هذا المجلد هو المكان الذي يوجد فيه كل من ملف qrcode
حزمة ولدينا qr.js
ستعيش وظيفة. لذا دعنا cd
إلى packages/sample/qr
وقم بتثبيت الحزمة:
npm install --save qrcode
الآن يمكننا كتابة الدالة في ملف جديد qr.js
ملف:
const qrcode = require('qrcode') exports.main = (args) => { return qrcode.toDataURL(args.text).then(res => ({ headers: { 'content-type': 'text/html; charset=UTF-8' }, body: args.img == undefined ? res : `<img src="${res}">` }))
} if (process.env.TEST) exports.main({text:"hello"}).then(console.log)
كل ما تفعله يتطلب qrcode
الحزمة وتصدير وظيفة تقوم بشكل أساسي بإنشاء ملف <img>
علامة ذات تنسيق PNG base64 للمصدر. يمكننا حتى اختباره في المحطة:
doctl serverless functions invoke sample/qr -p "text:css-tricks.com"
تحقق من ملف التكوين
هناك خطوة إضافية نحتاجها هنا. عندما تم تدعيم المشروع ، حصلنا على هذا القليل project.yml
ملف ويقوم بتكوين الوظيفة ببعض المعلومات عنها. هذا هو ما يوجد هناك افتراضيًا:
targetNamespace: ''
parameters: {}
packages: - name: sample environment: {} parameters: {} annotations: {} actions: - name: hello binary: false main: '' runtime: 'nodejs:default' web: true parameters: {} environment: {} annotations: {} limits: {}
انظر تلك الخطوط المميزة؟ ال packages: name
الخاصية هي مكان في packages
المجلد الذي تعيش فيه الوظيفة ، وهو مجلد يسمى sample
في هذه الحالة. ال actions/ name
property هو اسم الوظيفة نفسها ، وهو اسم الملف. إنه hello
بشكل افتراضي عندما نقوم بتدوير المشروع ، لكننا أطلقنا عليه اسمنا qr.js
، لذلك يجب علينا تغيير هذا الخط من hello
إلى qr
قبل الانتقال.
انشر الوظيفة
يمكننا القيام بذلك مباشرة من سطر الأوامر! أولاً ، نتصل ببيئة وضع الحماية لـ DigitalOcean بحيث يكون لدينا عنوان URL مباشر للاختبار:
## You will need an DO API key handy
doctl sandbox connect
الآن يمكننا نشر الوظيفة:
doctl sandbox deploy qr-generator
بمجرد النشر ، يمكننا الوصول إلى الوظيفة على عنوان URL. ما هو URL؟ هناك أمر لذلك:
doctl sbx fn get sample/qr --url
https://faas-nyc1-2ef2e6cc.doserverless.co/api/v1/web/fn-10a937cb-1f12-427b-aadd-f43d0b08d64a/sample/qr
هيك نعم! لم تعد هناك حاجة لشحن هذه الحزمة بأكملها مع باقي البرامج النصية! يمكننا الضغط على عنوان URL هذا وإنشاء رمز الاستجابة السريعة من هناك.
تجربة
We fetch
API وهذا كل ما في الأمر حقًا!
لنقم بإنشاء مولد رمز الاستجابة السريعة بوظيفة لا تحتاج إلى خادم! نشرت أصلا في حيل CSS. يجب احصل على النشرة الإخبارية.
- '
- "
- 9
- a
- من نحن
- الوصول
- الإجراءات
- الكل
- API
- في الأساس
- قبل
- الجسدي
- تغيير
- سحابة
- الكود
- مفهوم
- التواصل
- كنسولات
- خلق
- نشر
- نشر
- البيئة
- كل شىء
- الميزات
- الاسم الأول
- تبدأ من
- وظيفة
- وظائف
- مضحك
- توليد
- مولد كهربائي
- الذهاب
- هنا
- سلط الضوء
- يحمل
- كيفية
- HTTPS
- معلومات
- تثبيت
- IT
- نفسها
- جافا سكريبت
- القفل
- لغة
- خط
- خطوط
- القليل
- حي
- حب
- صنع
- جعل
- الأكثر من ذلك
- يتحرك
- إحتياجات
- عرض
- الخاصة
- صفقة
- جميل
- عملية المعالجة
- تنفيذ المشاريع
- الملكية
- رمز الاستجابة السريعة
- RE
- REST
- عائد أعلى
- يجري
- رمل
- Serverless
- طقم
- So
- بعض
- شيء
- في مكان ما
- غزل
- الدعم
- محطة
- تجربه بالعربي
- الاختبار
- •
- المصدر
- الأشياء
- تفكير
- us
- الويب
- الموقع الإلكتروني
- حل متجر العقارات الشامل الخاص بك في جورجيا