这是一个云函数的很好的小用例示例。Glitch 有一个很棒的 友好词语包。假设你想要随机生成“happy-elephant”或“walking-tree”,并且你需要在你的网站上使用 JavaScript 来完成。嗯,这个包相当大(约 200 KB),这是必要的,因为它包含了 大型词典。当你不需要时,你不会想把它发送到你的客户端 JavaScript 中。
云函数很酷,我们可以使用它们为这个包提供一个小的 API。这样,大小就不那么重要了,它位于服务器上。Netlify 使得这变得尽可能简单。
这是一个仓库,它使这一切成为可能。代码非常少!
functions
文件夹。
一个包含 Node 文件的 在项目的根目录:/functions/random.js
此文件将需要 friendly-words
包并导出一个函数。它本质上是获取两个随机单词,将它们组合在一起,然后返回它们。
const friendlyWords = require("friendly-words");
exports.handler = function(event, context, callback) {
const { predicates, objects } = friendlyWords;
const numberOfPredicates = predicates.length;
const numbersOfObjects = objects.length;
const randomPredicate =
predicates[Math.floor(Math.random() * numberOfPredicates)];
const randomObject = objects[Math.floor(Math.random() * numbersOfObjects)];
const output = `${randomPredicate}-${randomObject}`;
callback(null, {
headers: {
"Access-Control-Allow-Origin": "*"
},
statusCode: 200,
body: output
});
};
部署到 Netlify
我们可以配置 Netlify 以在 netlify.toml
文件中告诉它我们有这个函数(这样我们甚至不必费心使用 UI)。
[build]
command = "#"
functions = "functions/"
但是如果我想在设置中告诉 Netlify,我可以这样做。

部署后,我给它一个不错的站点名称,然后该云函数将在一个 URL 上可用。你甚至可以在浏览器中看到它。
https://friendly-words.netlify.com/.netlify/functions/random
现在我不必在我的客户端 JavaScript 中发送该包了——我只需点击此 URL 即可获取我想要的内容。
CORS
如果我从我自己的网站(也在 friendly-words.netlify.com
上)访问此 URL,则不必担心 CORS,但如果我需要从任何其他网站使用它,则需要担心。请注意上面 Node JavaScript 中的 Access-Control-Allow-Origin
内容。这解决了这个问题。
演示
要使用我们的小 API,我们可以从中 fetch
。就是这样!
这是否引起了你的兴趣?Netlify 有大量使用函数的示例。
在做这个的过程中,我偶然发现了 Paul Kinlan 的文章,它做了几乎完全相同的事情,但他的 API 有一些额外的功能,你可能想查看一下。
这样的东西对于可爱的小演示来说很好,但是你知道任何“现实世界”的例子吗?比如查询数据库或类似的东西。
Netlify Functions 完全可以用于生产级用途。请参阅最近的 与 FaunaDB 集成,这使得 像这样的教程 变得更加容易。
谢谢。喜欢它!这种在各个地方使用 Javascript 的方式 :-) 在客户端以及服务器上 :-) 这也允许前端开发人员为 Web 项目的后端部分进行开发。
你可能还添加了关于如何更改函数路径的说明(这样你就可以避免不太漂亮的“.netlify/functions/random”)。
你为我节省了大量与 CORS 相关内容的时间。尽管在我的项目中添加了 _headers 文件和 .toml 文件中的 [headers] 部分,但它无法从另一个站点工作。你的代码给了我解决它的思路,所以谢谢你!!!