让我们制作一个具有无服务器功能的二维码生成器! PlatoBlockchain 数据智能。 垂直搜索。 哎。

让我们制作一个具有无服务器功能的二维码生成器!

二维码很有趣,对吧? 我们爱他们,然后恨他们,然后又爱他们。 不管怎样,它们最近又出现了,这让我开始思考它们是如何制作的。 那里有无数的二维码生成器,但说这是你需要在自己的网站上做的事情。 这个包 可以做到这一点。 但它的重量也高达 180 KB,用于生成东西所需的一切。 您不希望将所有这些与其他脚本一起提供。

现在,我对云函数的概念还比较陌生,但我听说这就是蜜蜂的膝盖。 这样,该函数就位于服务器上的某个位置,可以在需要时调用。 有点像运行该功能的小 API。

一些主机提供某种云功能特性。 DigitalOcean 恰好是其中之一! 而且,与 Droplets 一样,函数也很容易部署。

在本地创建函数文件夹

DigitalOcean 有一个 CLI,它带有一个可以为我们搭建脚手架的命令,所以 cd 无论您想在哪里设置和运行:

doctl serverless init --language js qr-generator

请注意,该语言是明确声明的。 DigitalOcean 函数还支持 PHP 和 Python。

我们得到了一个很好的干净项目,叫做 qr-generator/packages 包含项目所有功能的文件夹。 那里有一个示例函数,但我们现在可以忽略它并创建一个 qr 旁边的文件夹:

让我们制作一个具有无服务器功能的二维码生成器! PlatoBlockchain 数据智能。 垂直搜索。 哎。
让我们制作一个具有无服务器功能的二维码生成器!

该文件夹是 qrcode 包和我们的 qr.js 功能将继续存在。 让我们 cdpackages/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> 使用 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 函数所在的文件夹,这是一个名为的文件夹 sample 在这种情况下。 该 actions/ name property 是函数本身的名称,也就是文件的名称。 它是 hello 默认情况下,当我们启动项目时,我们将其命名为 qr.js,所以我们应该改变那条线 helloqr 在继续之前。

部署函数

我们可以直接从命令行完成! 首先,我们连接到 DigitalOcean 沙箱环境,因此我们有一个用于测试的实时 URL:

## You will need an DO API key handy
doctl sandbox connect

现在我们可以部署函数了:

doctl sandbox deploy qr-generator

部署后,我们可以通过 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 嵌入后备

让我们制作一个具有无服务器功能的二维码生成器! 最初发表于 CSS技巧。 你应该 获取时事通讯.

时间戳记:

更多来自 CSS技巧