二维码很有趣,对吧? 我们爱他们,然后恨他们,然后又爱他们。 不管怎样,它们最近又出现了,这让我开始思考它们是如何制作的。 那里有无数的二维码生成器,但说这是你需要在自己的网站上做的事情。 这个包 可以做到这一点。 但它的重量也高达 180 KB,用于生成东西所需的一切。 您不希望将所有这些与其他脚本一起提供。
现在,我对云函数的概念还比较陌生,但我听说这就是蜜蜂的膝盖。 这样,该函数就位于服务器上的某个位置,可以在需要时调用。 有点像运行该功能的小 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>
使用 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
,所以我们应该改变那条线 hello
至 qr
在继续之前。
部署函数
我们可以直接从命令行完成! 首先,我们连接到 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,这就是它的全部内容!
让我们制作一个具有无服务器功能的二维码生成器! 最初发表于 CSS技巧。 你应该 获取时事通讯.