بیایید یک تولید کننده کد QR با عملکرد بدون سرور بسازیم! هوش داده PlatoBlockchain. جستجوی عمودی Ai.

بیایید یک تولید کننده کد QR با عملکرد بدون سرور بسازیم!

کدهای QR خنده دار هستند، درست است؟ ما آنها را دوست داریم، سپس از آنها متنفریم، سپس دوباره آنها را دوست داریم. به هر حال، آنها اخیراً دوباره ظاهر شده اند و این باعث شد که به نحوه ساخت آنها فکر کنم. مانند یک gazillion تولید کننده کد QR وجود دارد، اما بگویید این کاری است که باید در وب سایت خود انجام دهید. این بسته می تواند این کار را انجام دهد. اما وزن آن 180 کیلوبایت برای همه چیزهایی است که برای تولید چیزها نیاز دارد. شما نمی خواهید همه اینها را همراه با بقیه اسکریپت های خود ارائه دهید.

اکنون، من با مفهوم توابع ابری نسبتاً جدید هستم، اما می‌شنوم که برای چیزی شبیه به این، زانوهای زنبور عسل است. به این ترتیب، تابع در جایی روی سرور زندگی می کند که در صورت نیاز می توان آن را فراخوانی کرد. برای اجرای تابع مانند یک API کوچک مرتب کنید.

برخی از میزبان ها نوعی ویژگی عملکرد ابری را ارائه می دهند. DigitalOcean یکی از آنهاست! و مانند Droplets، استقرار توابع بسیار آسان است.

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

DigitalOcean یک CLI دارد که با دستوری چیزها را برای ما داربست می کند، بنابراین cd هر کجا که می‌خواهید موارد را تنظیم و اجرا کنید:

doctl serverless init --language js qr-generator

توجه داشته باشید که زبان به صراحت اعلام شده است. توابع DigitalOcean از PHP و Python نیز پشتیبانی می کنند.

ما یک پروژه تمیز خوب به نام دریافت می کنیم qr-generator با یک /packages پوشه ای که تمام توابع پروژه را در خود جای می دهد. یک تابع نمونه در آن وجود دارد، اما می‌توانیم فعلاً آن را نادیده بگیریم و a ایجاد کنیم qr پوشه درست در کنار آن:

بیایید یک تولید کننده کد QR با عملکرد بدون سرور بسازیم! هوش داده PlatoBlockchain. جستجوی عمودی Ai.
بیایید یک تولید کننده کد 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> با a base64 PNG برای منبع تگ کنید. ما حتی می توانیم آن را در ترمینال آزمایش کنیم:

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 پوشه تابع lives است که پوشه ای به نام است sample در این مورد. این actions/ name ویژگی نام خود تابع است که نام فایل است. این است hello به‌طور پیش‌فرض وقتی پروژه را چرخش می‌کنیم، اما ما پروژه خود را نامگذاری می‌کنیم qr.js، بنابراین ما باید آن خط را تغییر دهیم hello به qr قبل از حرکت

تابع را مستقر کنید

ما می توانیم این کار را مستقیماً از خط فرمان انجام دهیم! ابتدا، ما به محیط sandbox 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 را زده و کد QR را از آنجا تولید کنیم.

نسخه ی نمایشی

We fetch API و این واقعاً تمام چیزی است که در آن وجود دارد!

CodePen Embed Fallback

بیایید یک تولید کننده کد QR با عملکرد بدون سرور بسازیم! در ابتدا منتشر شد ترفندهای CSS. تو باید دریافت خبرنامه.

تمبر زمان:

بیشتر از ترفندهای CSS