无服务器计算彻底改变了软件开发,简化了部署和DEVOPS。该教程演示了使用CloudFlare Worker构建全栈无服务器应用程序,该平台可以抽象扩展和基础架构。该项目“ Repo Hunt”是受产品Hunt和Reddit的启发的开源项目的日常排行榜。完成的网站可在此处提供。
CloudFlare工人,利用CloudFlare的全球网络,无论用户位置如何,都提供极低的延迟性能。 Wrangler CLI工具简化了建筑,上传和发布。本教程使用“路由器”模板,启用基于URL的路由。源代码可在github [link to-github-repo]上找到。
设置您的环境
安装牧马人:
NPM install -G @Cloudflare/Wrangler
使用路由器模板创建一个新项目:
Wrangler生成repo-hunt https://github.com/cloudflare/worker-template-router CD回购
路由器模板利用WebPack,允许包含NPM模块。 Router
类处理URL路由。一个基本示例:
// index.js const Router = require('./ Router'); AddEventListener('fetch',event => { event.respondwith(handleRequest(event.request)); }); 异步函数handlequest(请求){ 尝试 { const r = new Router(); R.Get('/',()=>新响应(“ Hello,World!”)); const resp =等待R.Route(请求); 返回resp; } catch(err){ 返回新响应(err); } }
工人响应fetch
事件,返回Response
。本教程使用主页( /
),提交表格( /post
)和提交处理( /repo
)的路线。
路由和模板
主页( /
)路由呈现提交的存储库列表。我们将从简单的HTML响应开始:
// index.js const Router = require('./ Router'); const index = require('./ handlers/index'); // ...(其余index.js) //处理程序/index.js const头= {'content-type':'text/html'}; const handler =()=> { 返回新响应(“你好,世界!”,{headers}); }; 模块。Exports=处理程序;
使用wrangler preview
进行测试。接下来,我们将创建一个更复杂的模板:
//处理程序/index.js const头= {'content-type':'text/html'}; const模板= require('../ templates/index'); // ...(其余的处理程序/index.js) //模板/index.js const布局= require('./布局'); const template =()=>布局(`<h1 id="你好世界">你好世界!</h1> `); Module.exports =模板; //模板/layout.js const布局= body =>` $ {body} `; Module.exports =布局;
这使用一个布局模板来进行一致的样式(包括Bulma CSS)。
与工人KV的数据持久性
Workers KV提供了一个用于数据持久性的钥匙值商店。我们将存储存储库(键: repos:${id}
)和每日列表(键: $date
)。注意:工人KV需要付费计划。
基本KV操作:
repo_hunt.put(“ mystring”,“你好,世界!”); //设置一个值 const string =等待repo_hunt.get(“ mystring”); //检索价值
我们将创建用于管理回购和日期数据的类:
//商店/repo.js const uuid = require('uuid/v4'); class reto { // ...(repo类实施) } 模块。Exports= repo; //商店/day.js const today =()=> new Date()。tolocaledateString(); Module.exports = { add:async函数(id){// ...}, getRepos:async function(){// ...} };
Repo
类处理验证和持久性。 Day
管理每日存储库列表。
处理用户提交
表格(GET /post
)允许用户提交存储库。帖子/repo
处理程序程序提交:
//处理程序/create.js const qs = require('qs'); const repo = require('../ store/repo'); const Day = require('../ store/day'); // ...(创建处理程序实现)
这使用qs
库来解析数据,创建Repo
对象,将其保存到KV,并将其ID添加到每日列表中。
渲染主页上的数据
现在,主页检索并渲染存储库数据:
//处理程序/index.js // ...(更新的索引处理程序) //模板/index.js // ...(更新的模板功能渲染存储库)
Day
模块的getRepos
函数获取并实例化Repo
对象。模板渲染每个存储库。
部署
要求工人。dev子域:
Wrangler子域My-Subdomain
部署应用程序:
牧马人出版
在Cloudflare仪表板上创建一个KV名称空间,然后使用名称空间ID更新wrangler.toml
:
[[KV-Namespaces]] 绑定=“ repo_hunt” id =“ $ yournamespaceid”
将KV名称空间添加到wrangler.toml
后重新发布。该应用程序现已直播!
进一步发展
本教程为无服务器应用程序提供了基础。未来的增强功能可能包括投票,评论和更复杂的功能。探索工人文档和模板画廊以获取进一步的发展思想。
以上是使用CloudFlare工人建立全栈无服务器应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

在本周的综述中:datepickers正在让键盘用户头痛,一个新的Web组件编译器,有助于与Fouc进行战斗,我们终于获得了造型列表项目标记,以及在您的网站上获得网络攻击的四个步骤。

在本周的Web平台新闻世界中,Google搜索控制台可以更轻松地查看爬行的标记,我们了解到自定义属性


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具