首頁 > web前端 > css教學 > 讓我們製作具有無服務器功能的QR碼生成器!

讓我們製作具有無服務器功能的QR碼生成器!

Lisa Kudrow
發布: 2025-03-13 12:23:08
原創
871 人瀏覽過

Let's Make a QR Code Generator With a Serverless Function!

QR碼很有趣,對吧?我們愛它們,然後恨它們,然後又愛它們。無論如何,它們最近又開始流行起來,這讓我開始思考它們是如何製作的。市面上有數不清的QR碼生成器,但假設你需要在自己的網站上生成QR碼。雖然有些軟件包可以做到這一點,但它們通常體積龐大(例如,180KB),包含生成QR碼所需的所有內容。將這些內容與網站的其他腳本一起提供服務並不理想。

雲函數的概念為解決這個問題提供了一種優雅的方案。雲函數駐留在服務器上,僅在需要時調用,類似於一個小型API。

一些主機提供雲函數功能,DigitalOcean就是其中之一!與Droplets一樣,函數部署也相當容易。

本地創建函數文件夾

DigitalOcean提供了一個CLI命令,可以為我們搭建項目框架。進入你想要設置項目的目錄,然後運行:

 <code>doctl serverless init --language js qr-generator</code>
登入後複製

請注意,語言是明確聲明的。 DigitalOcean函數還支持PHP和Python。

我們會得到一個名為qr-generator的簡潔項目,其中包含一個/packages文件夾,該文件夾包含項目的所有函數。其中包含一個示例函數,但我們現在可以忽略它,並在其旁邊創建一個qr文件夾:

該文件夾將存放qrcode包和我們的qr.js函數。因此,讓我們進入packages/sample/qr目錄並安裝軟件包:

 <code>npm install --save qrcode</code>
登入後複製

現在,我們可以在一個新的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="/static/imghw/default1.png" data-src="https://img.php.cn/" class="lazy" alt="Let's Make a QR Code Generator With a Serverless Function!"> `
  }))
}

if (process.env.TEST) exports.main({text:"hello"}).then(console.log)
登入後複製

這段代碼的作用是引入qrcode包,並導出一個函數,該函數基本上使用base64 PNG生成一個<img alt="讓我們製作具有無服務器功能的QR碼生成器!" >標籤作為源。我們甚至可以在終端中測試它:

 <code>doctl serverless functions invoke sample/qr -p "text:css-tricks.com"</code>
登入後複製

檢查配置文件

這裡還有一個額外的步驟。項目搭建完成後,我們會得到一個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屬性是函數本身的名稱,也就是文件名。當我們啟動項目時,默認名稱為hello,但我們將其命名為qr.js,因此在繼續之前,我們應該將該行從hello更改為qr。

部署函數

我們可以直接從命令行進行部署!首先,我們連接到DigitalOcean沙箱環境,以便獲得用於測試的實時URL:

 ## 你需要一個DO API密鑰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碼。

演示

我們獲取API,這就是全部內容!

以上是讓我們製作具有無服務器功能的QR碼生成器!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板