Workers 真的是新世界的大门,我很遗憾居然在其发布快一年以后才知道它的存在。
运行环境 Runtime environment
1 | 操作系统 : Windows10 |
背景
在搭建google drive网页挂载程序的时候,我初次尝试Cloudflare的Workers功能。
打破了我以前比较固有的开发方式,workers无疑是前后端web开发的福音。
正文
workers严格来说既不算前端,也不算后端,更像是中间人角色。
对前端开发而言,可以做到无后端托管,或者接口转发,非常方便。
对后端开发而言,workers作为中间件可以起到解析加速作用,
还能在不占用后端资源的情况,轻松的进行缓存,
作为分布式后端服务器的路由或者中间处理都可以胜任,
节约大量的后端资源,节省下来的服务器算力又可以服务更多用户。
创建workers
登录 cloudflare,进入Workers
创建Worker
Worker 开发
1.官方文档提供了很多文档可以作为参考官方模板
- worker JS脚本 浅析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47// addEventListener中注册,然后开始你表演
async function handleRequest(request) {
const init = {
headers: {
'content-type': type,
},
}
const responses = await Promise.all([fetch(url1, init), fetch(url2, init)])
const results = await Promise.all([gatherResponse(responses[0]), gatherResponse(responses[1])])
console.log("我是控制台打印信息!")
return new Response(results, init)
}
/**
* 分配给Worker的HTTP请求的事件类型(即,Object如event中传递的addEventListener('fetch', event => {…}))。
* 如果注册了多个事件侦听器,则在不调用事件处理程序respondWith()时,运行时会将事件传递给下一个已注册的事件处理程序。
*/
addEventListener('fetch', event => {
return event.respondWith(handleRequest(event.request))
})
/**
* gatherResponse等待并以字符串形式返回响应主体。
* 在异步函数中使用await gatherResponse(..)获取响应主体
* @param {Response} response
*/
async function gatherResponse(response) {
const { headers } = response
const contentType = headers.get('content-type')
if (contentType.includes('application/json')) {
return await response.json()
} else if (contentType.includes('application/text')) {
return await response.text()
} else if (contentType.includes('text/html')) {
return await response.text()
} else {
return await response.text()
}
}
/**
* 这里就放一些全局变量
*/
const someHost = 'https://workers-tooling.cf/demos'
const url1 = someHost + '/requests/json'
const url2 = someHost + '/requests/json'
const type = 'application/json;charset=UTF-8'
总结
我头上出现了很多问号,不过也在逐渐理解wokrers这件东西了,归根结底还是自己在JS上造诣不够深入。
相信前端专门搓JS的人,应该会更容易接受!