十、下一步是什么?
我们已经走了很长一段路。 我们从了解 Deno 的基础知识开始,然后构建和部署一个完整的应用。 到目前为止,您应该对 Deno 感到满意,并对它解决的问题有很好的认识。 希望我们所经历的所有阶段都能帮助你澄清许多关于 Deno 的问题。
我们特意选择将这本书变成一段旅程,从我们的第一个脚本开始,以一个部署的应用结束,随着本书的继续,我们已经对这个应用进行了编码和迭代。 与此同时,我们解决了应用开发人员可能遇到的许多挑战,并提出了解决方案。
到目前为止,您应该已经掌握了一些知识,这些知识将帮助您决定 Deno 是否将成为您下一个项目的解决方案的一部分。
这一章将以简短的回顾我们到目前为止所学到的内容开始,回顾所有的阶段和学到的东西。 然后,正如这一章的标题所暗示的那样,我们将把重点放在未来。 本文将重点讨论接下来的内容,包括作为运行时的 Deno 以及作为开发人员使用新工具的您。
我们将快速了解一下 Deno 核心团队目前的重点是什么,他们正在做什么,以及未来提出的功能是什么。 随着本章的继续,我们还将了解社区中正在发生的事情,并重点介绍一些有趣的举措。
本章最后将展示我们如何将一个包发布到 Deno 的官方注册中心,以及其他回馈 Deno 社区的方式。
在本章结束时,你将熟悉以下几个方面:
- 回顾我们的旅程
- Deno 的路线图
- Deno 的未来和社区
- 向 Deno 的官方登记处发布一个包裹
回顾我们的旅程
很多地方都被覆盖了。 我们相信这本书(希望)是一个有趣的旅程,从不知道 Deno 到用它构建一些东西,最后以一个部署的应用结束。
我们从了解工具本身开始,首先了解它提供的功能,然后用标准库编写简单的程序。 随着我们知识的积累,我们很快就有了足够的知识来构建一个真正的应用,这就是我们所做的。
这次冒险始于使用标准库构建尽可能简单的 web 服务器。 我们广泛地使用 TypeScript 来帮助指定清晰的应用边界,我们成功地让一个非常简单的应用运行起来,达到了我们的第一个检查点:hello world。
我们的应用不断发展,随着它开始有更复杂的需求,我们需要深入到 Deno 社区可用的 web 框架。 在对它们进行了高层次的比较之后,根据我们的应用需求,我们选择了oak
。 下一步是将我们(仍然)简单的 web 服务器移植到我们选择的框架中,这是一件轻而易举的事。 使用 web 框架使我们的代码更简单,并使我们能够委托那些我们真的不想自己处理的事情,让我们能够专注于应用本身。
下一步是向应用添加用户。 我们创建应用端点来启用用户注册中心,当存储用户的需求出现时,我们将应用连接到 MongoDB。 有了用户后,实现用户身份验证就很简单了。
随着应用的增长,对更复杂配置的需求也在增长。 从它运行的服务器端口到证书文件的位置,或者到数据库凭据,所有这些都需要单独处理。 我们从应用中抽象出配置并将其集中起来。 在此过程中,我们添加了对在文件或环境变量中保存配置的支持。 这使得根据环境使用不同的配置运行应用成为可能,同时保持敏感值的安全性和在代码库之外。
当我们的旅程即将结束时,我们想要确保我们的代码足够可靠。 这将我们引向一个测试章节,在那里我们学习了在 Deno 中测试的基础知识,并为我们创建的应用的几个用例创建了不同的测试。 我们从一个简单的单元测试过渡到一个跨模块测试,再到一个让应用运行的测试,并向它发出一些请求。 在这个过程的最后,我们对代码按照预期工作有了更多的信心,并且我们向工具链添加了测试功能。
最后,我们将编写的代码变成了现实,并进行了部署。
我们让应用在容器化的环境下在 Heroku 上运行。 与此同时,我们了解了 Docker 以及如何使用它使开发人员更容易地运行和部署他们的代码。 我们以一种部署 Deno 应用的自动化方式结束了这一章,结束了从代码到部署的循环。
在这段旅程中,我们经历了应用开发的许多常见阶段,遇到挑战并使用适合我们用例的解决方案解决它们。 我希望已就你们的一些主要关切和问题作了介绍,为你们今后的工作提供基础。
我们不知道接下来会发生什么,但我们知道这取决于 Deno 和它的社区,我们希望你能将自己视为其中的一部分。 在下一节中,我们将看看 Deno 未来的路线图,计划的内容,以及他们的短期努力的方向。
Deno 的路线图
自从 Ryan 第一次在 JSConf 上介绍 Deno 以来,已经发生了很多变化; 已经采取了一些重大措施。 随着运行时的第一个稳定版本的推出,社区爆发了,许多来自其他 JavaScript 社区的人带着许多热情的想法加入了进来。
Deno 的核心团队目前正在努力推动 Deno 的发展。 这种贡献不仅以代码、问题和帮助人们的形式出现,而且还包括计划和描述下一步是什么。
对于短期路线图,核心团队要确保跟踪计划。 以下两个在 GitHub 上提出的问题被用于跟踪 2020 年第四季度和 2021 年第一季度的工作:
如果您详细地查看了这些特性,您就可以跟踪关于这些特性的每个讨论、代码和决定。 我将在这里列出一些目前的倡议,以便你可以先睹为快:
- DenoLanguage Server Protocol(LSP)和语言服务器
- 编译为二进制文件(Deno 应用的单个可执行文件)
- Data, blob, WebAssembly,和JavaScript Object Notation(JSON)导入
- (api)
- 支持立即调用函数表达式(IIFE)包
- WebGPU 支持
- HTTP / 2 的支持
这些只是一些例子,的一些重要举措与 Deno 发生。 您可以想象,由于它还处于早期阶段,目前有许多致力于修复 bug 和重构代码的工作,我没有将它们添加到这个列表中。
您可以更深入地了解前面提到的 GitHub 问题,以获得关于任何计划的更多细节。
所有这些都是 Deno 核心团队的努力。 记住,Deno 之所以存在,是因为有人在空闲时间开发它。 回馈社区的方式有很多种,可以是 bug 报告、代码贡献、帮助沟通渠道,也可以是捐赠。
如果 Deno 正在帮助你和你的公司把想法变成现实,请考虑成为一个赞助商,这样它就能保持健康和不断发展。 你可以在 GitHub 上点击以下链接:https://github.com/sponsors/denoland。
还有一些人也对 Deno 负责,对它的热情,以及它的发展,这些人就是 Deno 的社区。 在下一节,我们将介绍 Deno 的社区,那里发生了有趣的事情,以及你如何在其中发挥积极的作用。
德诺的未来和社区
Deno 社区正在快速发展——它充满了对它感到兴奋并渴望帮助它成长的人。 当你开始使用它时,就像你在这本书的整个过程中所做的那样,你可以为它添加非常重要的贡献。 这可能是您遇到的一个 bug,可能是一个对您有意义的特性,或者只是您想要更好地理解的东西。
为了让你成为其中一员,我建议你加入 Deno 的 Discord 频道(https://discord.gg/deno)。 这是一个非常活跃的地方,你可以找到其他对 Deno 感兴趣的人,如果你想找到包的作者,自己构建包,或帮助与 Deno Core。 从我的经验来看,我只能说我在那里遇到的每个人都很友好,都很愿意帮忙。 这也是保持最新消息的好方法。
另一种投稿方式是在 GitHub 上关注 Deno 的知识库(https://github.com/denoland)。 主存储库可以在找到 https://github.com/denoland/deno,在那里你会发现 Deno命令行界面(CLI)和 Deno 核心,而标准库住在自己的存储库(https://github.com/denoland/deno_std【显示】)。 还有其他存储库如 https://github.com/denoland/rusty_v8,哪些主机使用的铁锈绑定 Deno 为 V8 JavaScript 引擎,创建 https://github.com/denoland/deno_lint 或【病人】,Deno 短绒在哪里举办。 可以在 GitHub 上随意查看你感兴趣的库。
提示
要想在不收到过多通知的情况下了解 Deno 上正在发生的事情,最好的方法就是查看 Deno 的主库。 你会得到一个通知的每一个版本,你可以遵循非常全面的发布说明。 我会给你们一个发布说明的例子,以便你们知道它们是什么样子的。
这是版本更新通知的样子:
图 10.1 - Deno 的 v1.6.2 发布说明
在 GitHub 发布的上面的截图中,Deno 团队还努力在他们的网站上写了全面的发布说明,这是另一个保持循环的好方法(https://deno.land/posts)。
这就是你可以做的,成为 Deno 社区的一个组成部分。 你所需要做的就是使用它,报告错误,结识新朋友,剩下的就会随之而来。
这个社区不仅由核心成员和帮助 Deno 的人组成,还包括用它构建的包和项目。
在下一节中,我将重点介绍一些我认为很棒的倡议,它们正在推动社区向前发展。 这是一个个人清单; 把它作为一个建议,仅此而已,因为我确信还有其他的倡议可以加入。
社区里发生的有趣的事情
在我跟踪 Deno 的过去两年里,发生了很多事情。 在 v1.0.0 发布之后,随着更多的人加入,许多想法出现了。 我将列出几个我认为特别有趣的倡议,不仅因为它们提供的功能,而且也是一个很好的学习资源。
天龙
Nodemon 是开发 Node 时的首选解决方案,而 Denon 则是 Deno 最常用的工具之一。 如果您还没有听说过它,它基本上会监视您的文件并在您更改任何内容时重新运行您的 Deno 应用。 在使用 Deno 进行开发时,它是您最希望保留在工具链上的工具之一。 你可以在https://github.com/denosaurs/denon上查看他们的 GitHub 页面。
Aleph.js
尽管我们没有足够的空间在这里进行更多的探索,但 Deno 在浏览器上运行的能力解锁了一套完整的新功能,这导致了 alepph .js 等项目的出现。 这个倡议自称为 Deno 中的React 框架,并得到了相当多的使用和热情。 如果您还没有听说过它,它从 Next.js 框架(https://nextjs.org/)中汲取了许多方面,在 Deno 中实现了它们,并添加了一些其他东西。 这是一个相当新的功能,但已经具备了服务器端渲染、热模块重载、文件系统和 API 路由等功能。 你可以在https://alephjs.org/上了解更多。
Nest.land
尽管 Deno 有自己的注册表(我们将在下一节使用它),但是社区创建其他注册表仍然有原因。 巢。 土地就是其中之一; 它是一个基于区块链技术的模块注册表,确保托管在那里的模块不会被删除。 它是免费的、去中心化的,并且可以在没有 Git 的情况下工作,是许多包作者的首选解决方案。 详情请参阅https://nest.land/。
Pagic
随着静态站点生成器继续得到越来越多的使用,它只是一个时间问题,直到他们中的一些与 Deno。 这就是 Pagic 所做的——它是一个静态站点生成器,具有有趣的功能,如 React、Vue 和 M 支持等。 它使用约定超过配置,这意味着它是相当容易让你的第一个网站运行。 详情请浏览https://pagic.org/。
Webview_deno
现在人们使用的许多应用都是用 JavaScript 编写的,并且都是在 web 视图中运行的,所以它们到达 Deno 只是时间问题。 这个模块包含一个 Deno 插件,因此仍然被认为是不稳定的。 然而,尽管它有局限性,而且是一个正在进行的项目,但它已经提供了许多由 Electron (Node.js 替代方案)提供的有趣功能。
在上述所有的包之上,在第四章、构建 Web 应用中提到的所有包都值得一看。 它们是快速发展的 web 框架,正如我们之前所探讨的,为使用它们的开发者提供了不同的好处。 如果你正在使用 Deno 开发 web 应用,请务必密切关注它们。 点击https://github.com/webview/webview_deno查看他们的 GitHub 页面。
你认为 Deno 还有功能缺失吗? 你有没有开发出你认为对更多人有用的东西? 开源的核心依赖于那些有趣的软件和它们背后的人。
做了一些你想分享的东西? 别担心,我们会照顾你的。 在下一节中,您将学习如何做到这一点!
向 Deno 的官方登记处发布一个软件包
开源的核心是由使用自由软件并希望回馈社会的人和公司组成的。 当您创建了一段您认为足够有趣的代码时,您很可能想要分享它。 这不仅是一种帮助他人的方法,也是一种改进自己代码的方法。
开源和这种共享文化使 Deno、Node.js 和许多其他你可能使用的技术成为现实。 因为这本书都是关于 Deno 的,所以如果不讨论这个话题就没有意义。
Deno 有一个我们以前使用过的官方模块注册表。 在这个地方,任何拥有 GitHub 账户的人都可以与社区共享自己的模块,它提供了自动化和缓存机制来保存不同版本的模块。
我们接下来要做的是将我们自己的模块发布到同一个注册表中。
我们将使用一个软件,到目前为止,我们可以通过直接链接到 GitHub。 这是可行的,但它既没有明确的版本控制,也没有任何类型的缓存,如果代码从 GitHub 中删除,它就无法使用。
还记得我们在一个叫jwt-auth
的包里用了一个AuthRepository
吗? 当时,出于实际原因,我们使用了直接的 GitHub 链接,但从现在开始,我们将在 Deno 的模块注册表中发布它。
我们将使用在 GitHub 上托管的完全相同的代码,但以deno_web_development_jwt_auth
的名称发布它。 我们选择这个名字是为了表明它是这本书旅程的一部分。 对于为学习目的而开发的包,我们也不想从注册表中获取有意义的名称。
我们走吧! 进行如下:
-
为要发布的模块创建存储库。 如前所述,我们将使用
jwt-auth
模块从第六章,添加身份验证和连接到数据库【显示】(https://github.com/PacktPublishing/Deno-Web-Development/tree/master/Chapter06/jwt-auth),但随意使用您所选择的任何其他模块。 按照 GitHub 的指令克隆最近创建的git
库。 确保你将你的模块的文件复制到这个仓库文件夹,并运行以下的命令(这些与 GitHub 的指令相同):* Go to https://deno.land/x and click the Add a module** button (you might need to scroll a little to find it), as illustrated in the following screenshot:图 10.2 -在 Deno 模块注册表中添加模块按钮
- Input the name of the module in the box that appears and click Next.
我们将使用
deno_web_development_jwt_auth
作为包的名称,但由于明显的原因,您不能这样做。请记住,如果出于测试原因发布模块,则应该使用测试名称。 我们不希望在用于测试目的的模块中使用“真正的”模块名。
- In the next box that appears, choose the directory where the code to be published is living.
为我们的模块,该模块将包含
jwt-auth
代码从第六章,添加身份验证和连接到数据库,我们将离开这个空白,因为它是生活的根源(新)存储库中创建步骤 1【显示】。***** Now, it's just a matter of adding the webhook by following the instructions.
Deno 模块注册表使用 GitHub webhooks 来获取包的更新。 这些 webhook 应该由新的分支或标签触发,然后 Deno 的模块注册中心将从这些 GitHub 标签创建一个版本。
下一个说明在 Deno 的页面上,但出于实际原因,我在这里列出它们:
a.导航到你想要在 GitHub 上添加的存储库。
b.进入设置选项卡。
c.点击Webhooks选项卡。
d.点击添加 webhook按钮。
e。输入以下统一资源定位符(URL)载荷 URL 字段:
https://api.deno.land/webhook/gh/<package_name>
(包名应该是一样的你选择【显示】步骤 4)。*****f.选择
application/json
作为内容类型。**g.选择*让我选择个人项目。****
*h.仅选择*Branch 或创建标签事件。****
*i.按*键添加 webhook。****
* 现在,这只是创建一个版本的问题,正如我们提到的,这是通过
git
标签完成的。 假设你已经在步骤 2中提交了你的包代码,我们只需要创建并推送这个标签,如下:$ git tag v0.0.1 $ git push origin --tags Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 748 bytes | 748.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:asantos00/deno_web_development_jwt_auth.git * [new tag] v0.0.1 -> v0.0.1
- 如果我们现在导航到https://deno.land/x,并搜索您的包的名称(在我们的示例中,
deno_web_development_jwt_auth
),它应该出现在那里,如下截图所示:*
*
图 10.3 -在 Deno 的模块注册表上发布的包
这就是-这就是所有你需要开始与社区分享你的惊人的 Deno 代码! 从现在开始,您不仅可以使用 Deno 构建应用,还可以创建包和回馈社区。
这部分和这本书就到此为止了,谢谢你一直坚持到最后。 我们希望它对你们有用,帮助你们学习 Deno,也希望你们和我们一样对它感到兴奋。
如果你觉得有什么我能帮上忙的,我很乐意和你联系。 你可以通过 GitHub 或 Twitter,通过该书序言中的联系人与我联系。
小结
首先,也最重要的是,感谢所有坚持到书的结尾的人! 我希望这对你们来说是一段有趣的旅程,一段满足你们期望的旅程,一段解决了你们对 Deno 的许多问题和担忧的旅程。
这只是一段(希望是很长的)旅程的开始。 Deno 在成长,你也在其中。 你用得越多,贡献得越多,它就会变得越好。 如果您像我一样,认为它提供了许多好处,可以使它成为编写 JavaScript 应用的游戏规则改变者,那么就不要再等了,分享您的热情吧。
许多像我们这样的人正在帮助推动 Deno 向前发展,帮助社区,开发模块,并打开 pull requests。 最后,在最适合的项目中使用它是你能给出的最好建议。
在整本书中,我不仅试图强调 Deno 的优势,而且还试图非常清楚地表明,它不是,也不会是一颗银弹。 它提供了一组巨大的优势,特别是与 Node.js 相比,在相同的用例集(就像你可以在第 1 章,什么是 Deno? )。 正如我们在本章中提到的那样,正在添加的许多特性将使 Deno 能够用于越来越多的用例,但我确信还有很多我们甚至不知道的东西。
从现在起,一切由你决定。 我希望这本书能让您感到兴奋,并迫不及待地编写 Deno 应用。
下一个最好的步骤是自己编写应用。 这将引导你去研究,与人交谈,并解决你自己的问题。 我试图通过解决一些最常见的问题来尽可能地缓解你的前进道路。
我确信有很多在线资源、文章和书籍,但真正能让 Deno 变得更好的地方仍然是 Discord 频道和 GitHub 知识库。 这些都是第一手新闻的来源!
我等不及想看看你接下来要做什么了。*
版权属于:月萌API www.moonapi.com,转载请注明出处