阅读 136

那些年Copy过的Deno小应用| 项目复盘

想了想,还是要参与一下本次的任务,也是时候盘点一下过去的时间都去哪儿了。首先,想回顾一下我在'学(Copy)习(paste)' Deno 小应用上所花费的时间,对于正常开发来说,熟悉一门技术可能不会浪费太多时间,而我,伪大的Copy攻城狮,不仅效率低下而且收效甚微。不过明白了一个道理,“多思考,少抱怨,未来会更美好”。

项目简介

本次复盘的是 2 个Deno小应用,分别是基于腾讯云函数的 Deno “彩虹屁 Bot” -- 每日发邮件关怀心爱的TA,包含每日天气、每日鸡汤、倒计时以及早晚请安;基于云开发 CloudBase 以及 Fork 自 JJC 大佬每日热榜项目数据的一条热搜。其实并没有什么技术含量和营养价值,非得说对我有什么提升的话,无非就是我的Copy技术又精进了,以前只知道大事小事问度娘,现在知道上全球最大的同性交友网站找大佬们随意码的项目来精心研究并“深拷贝”,最终转化为自己的令人作呕的产出(现在看到MD文档中错别字和大小写不规范都忍不住提个PR),有时候也深刻怀疑自己是不是病入膏肓了。

在这个两个小应用中,我扮演者重要的代码搬运工角色,同时也主动给大厂真·工程师提issue并探讨导致问题出现的可能原因及解决方案。在这里感谢腾讯云大佬们不厌其烦地解答和指导!

项目背景

(请忽略我八股文形式的码字)

Deno版的“彩虹屁 Bot”

参考链接: juejin.cn/post/689859…

先说说为什么会做 Deno版的“彩虹屁 Bot”,其缘由很单纯--白女票稀土掘金,当时看到 Serverless专题的征文活动,然后看到“人生苦短”的 Python 大佬花三分钟写的并且上云的“彩虹屁Bot”,加上碰巧看到腾讯云支持部署Deno云函数,就忍不住想完成这个“Hello World”。刚开始以为一两个小时就能搞定,到后来,做着做着就开始怀疑人生了,硬是折腾了一宿……

image.png

一条热搜

参考链接: juejin.cn/post/692747…

再讲讲为什么会有一条热搜,其缘由也很单纯--白女票云开发周边,当时云开发在征集一键部署的云应用,我想着之前跟着 justjavac 临摹的今日热搜要发挥一下她的作用,光有数据不能很好的落地展示,岂不白白浪费了Github 的Action资源?(自从用了Action,越来越绿简直绿得发紫,寻思着这个仓库移除掉那片绿意就会消失的无影无踪)。于是结合”用最低调的功能,炫最高调的Deno”,硬生生Copy了一个 a 链接和按钮,就是一条热搜。

one-hot.gif

实践过程

按照Copy攻城狮本大师的一贯套路,实践过程都很简单,万年不变的:Ctrl + CCtrl + V,以至于用了四年的键盘,唯独CV键的字面被磨掉了。

为什么会选用 Deno?这个问题很好解释,不因为她有多优秀,而是因为本大狮是关注的大佬在不断调教她,正好也蹭蹭热度。另一个重要的原因,放之四海而皆准的道理:要了解新事物就先使用它,实践是检验真理的唯一标准!

怎么使用?我想都逃脱不了“道路千万条,文档第一条”吧,先过一遍文档以及相关的技术文章,大体上就可以动手做了。比如安装环境、编写“Hello World”……我经常做完这两步就没有下文了,这是非常错误的学习态度,所以名词学会了,运用就学废了。个人感觉最棒的方式是将技术运用到实际场景中来,解决具体的问题并从中吸收经验,也许一路走下去,前边的每一步都是坑……

Deno版的“彩虹屁 Bot”

参考链接: juejin.cn/post/689859…

Deno 云函数的代码编写十分简单,借助Deno还算成熟的社区生态,我们轻而易举就能实现邮件服务器的搭建、时区日期时间的获取、配置文件的读取,对一个定时发送邮件的小应用来说,几个方法就把全套流程处理完毕。然而,上云并不是想象中的一帆风顺,在将Deno云函数部署上线的时候,我遇到了前所未有的挑战:对云函数运作机制不熟悉导致不理解其中一些代码写法的含义,其实,有时候我们需要自行构建HTTP 服务用来传输请求数据及返回响应。此外一些平台对文件大小的限制让我们不得不考虑一些额外的方式来处理大的依赖带来的问题,比如在云函数中 Deno的程序包超过了常规代码大小的限制,我们需要将它上传至然后再调用处理。另外一个是平时做服务端可能会遇到的时区问题,也就是说服务端获取的时间不一定是我们认为的当地时间(如北京时间),这是就需要对服务指定时区。

一条热搜

参考链接: juejin.cn/post/692747…

今日热搜trending-in-one 简单粗暴地将多个分散的函数集中到了一个仓库,并根据已有的实现仿写了今日头条的热搜数据获取。实现的代码也比较简单,考验的更多的是数据处理的能力。一般而言,我们可以基于大平台已有的热搜接口,拿他们的数据进行重组也达到预期的格式,这里可以简单应用下TypeScript对变量进行类型声明。然后就是文件的读写,我们将每天的数据保存为JSON和MarkDown格式并进行存档,方便后续应用使用,其实基于此数据的应用可以有很多,比如历史热搜榜、全网热力分析……然后这次简单的衍生应用--一条热搜,其实最开始是想做类似于短视频那种信息流的形式,随机显示热搜,滑动切换到下一条,可收藏可点赞可评论,后来,想法只停留在想法就没有深入行动了(其实主要是技术太水)。退而求次,先把最次的应用完成了,思路还算是继承下来了。接着也是跪在了部署环节,为此没少提工单……其实导致部署失败的“罪魁祸首”也是Deno生态的不完善。为何Copy攻城狮资质平平敢如此口出狂言?这是因为本大师的亲身体会。Deno在版本升级过程的两个“重大问题”刚好被我都遇上了:一是Deno当时的镜像由于没考虑到jsdelivr CDN 单文件最大只支持 20M,当程序包大于限制值我们就不能正常获取Deno;二是当时 Denon 不支持新版本的Deno 报错permission error……在完成实践的同时,也收获了开源项目的参与经历(其实和修改MarkDown类似)。

总结思考

尽管我做过的这些折腾,对于我的成长没有实质性的帮忙,我的技术也不见得有所提升,不过,不可否认的是我在和别人交流时又有了新的谈资,毕竟我也是使用过Deno 和Serverless的代码搬运工了,相关文章也有幸被全网转载,当然还有物质上的满足--掘金和云开发周边。谈到提升,我也犹豫过,要不要报个培训班提升下,想来想去还是放弃了,案头那些落满尘埃的书籍我都不曾触碰,何来的毅力坚持兼职学习?有时候也怀疑自己,是不是得找个专家好好把把脉探探路,虽然在一些AMA上也有大佬解答过我类似的问题,感觉还是差些系统的点拨。期待这次有机会能获得职业指导!

本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情

文章分类
前端
文章标签