InfoQDeno 1.0 即将发布,你需要知道的都在这里了( 五 )


8Deno doc 使用 JSDoc 处理元数据
JSDoc 于 1999 年发布 , 到现在已经过去了 21 年 。 现在 , 它是为 JavaScript 和 TypeScript 编写文档的最常用和受支持最广泛的方法 。 虽然它不是正式的 Web 标准 , 但它是 package.json 中所有元数据的一个完美替代品 。
/** * @file Manages the configuration settings for the widget * @author Lucio Fulci * @copyright 2020 Intervision * @license gpl-3.0 * @version 1.0*
Deno 开箱即用地支持 JSDoc , 并将其用于内置的文档系统 。 虽然 deno doc 命令现在不使用上面的元数据 , 但它会读取函数的描述及其参数的描述 。
/** * Returns a value of (true?) if the rule is to be included * * @param key Current key name of rule being checked * @param val Current value of rule being checked**/
你可以使用 deno doc命令来查看程序的文档 。
deno doc mod.ts
function rulesToRemove(key: string, val: any[]): booleanReturns a value of if the rule is to be included
在线托管程序时 , 请使用在线文档查看器来查阅细节 。
9Deno 的内置工具
InfoQDeno 1.0 即将发布,你需要知道的都在这里了
本文插图
这是对前端开发人员影响最大的领域 。 JavaScript 工具链现在的状况非常混乱 。 当你加入 TypeScript 工具链时 , 复杂度甚至会进一步增加 。
JavaScript 的最大优势之一是它不需要编译 , 所以可以在浏览器中直接运行 。 这样你就可以立刻获得编码的反馈 。 入门门槛很低;你只需一个文本编辑器和一个浏览器就能编写软件了 。
不幸的是 , 这种简单性和可访问性已被称为过度工具链的风气破坏了 。 这种风气已经将 JavaScript 的开发工作变成了一场噩梦 。 我甚至看过一整套关于配置 Webpack 的课程 。 这种乱象需要有个尽头——生命苦短啊 。
工具链已经混乱到了这样的程度:许多开发人员迫切希望回到实际编写代码的流程 , 而不是浪费时间鼓捣那些配置文件 , 并为应该选择哪种标准而苦恼不已 。 针对这一问题的一个新兴项目是 Facebook 的 Rome 。 在撰写本文时 , 它还处于起步阶段 。 尽管它可能被证明是有价值的 , 但 Deno 有潜力成为更实质性的解决方案 。
Deno 本身就是一个完整的生态系统 , 具有运行时和自己的模块 / 包管理系统 。 这样就有了更大的空间来内置所有工具 。 下面我们研究一下 1.0 版本中可用的工具 , 以及如何使用它来减少对第三方库的依赖并简化开发流程 。
目前尚无法在 Deno 中替换整个前端构建管道 , 但这一天应该不久就会到来了 。
测试
测试运行器(test runner)是使用 Deno.test() 函数内置到 Deno 核心中的 。 断言库是在标准库中提供的 。 它包括了你常用的所有断言 , 例如 assertEquals() 和 assertStrictEq() , 以及一些不太常见的断言 , 如 assertThrowsAsync() 。
在撰写本文时 , Deno 尚无测试覆盖功能 , 并且需要使用第三方工具(如 Denon)来设置监视(watch)模式 。
要查看所有的测试运行器选项 , 请使用 deno test --help 命令 。 尽管选项数量不多 , 但很多功能你可能之前在 Mocha 之类的程序中就很熟悉了 。 例如 , –failfast 将在遇到第一个错误时停止 , 而 --filter 可用来过滤要运行的测试 。
使用测试运行器
最基本的语法是 deno test 。 它将在工作目录中运行以 _test 或.test 结尾的所有文件 , 扩展名为.js、.ts、.jsx 或.tsx(例如 example_test.ts)
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
Deno.test({name: "testing example",fn(): void {assertEquals("world", "world");assertEquals({ hello: "world" }, { hello: "world" });},});


推荐阅读