植物百科网
当前位置: 首页 农业百科

denza启动指导(如何使用Deno的内置工具)

时间:2023-06-05 作者: 小编 阅读量: 1 栏目名: 农业百科

如何使用Deno的内置工具Deno和Node.js之间一个令人惊讶的区别是运行时内置的工具数量除了Read-Eval-PrintLoop(REPL)控制台,Node.js需要第三方模块来处理大多数间接编码活动,例如测试和lin。

Deno和 Node.js之间一个令人惊讶的区别是运行时内置的工具数量。除了 Read-Eval-Print Loop (REPL) 控制台,Node.js 需要第三方模块来处理大多数间接编码活动,例如测试和 linting。Deno 内置工具提供了开箱即用的几乎所有东西。

在我们开始之前,请注意。deno是新的!谨慎使用这些工具。有些可能不稳定。很少有配置选项。其他可能会产生不良副作用,例如递归处理每个子目录中的每个文件。最好从专用项目目录测试工具。

安装 Deno

使用以下终端命令在 macOS 或 Linux 上安装 Deno:

curl -fsSL https://deno.land/x/install/install.sh | sh

或来自 Windows Powershell:

iwr https://deno.land/x/install/install.ps1 -useb | iex

Deno 手册中提供了更多安装选项。

回车deno --version检查安装是否成功。显示 V8 Javascript 引擎、TypeScript 编译器和 Deno 本身的版本号。

升级 Deno

使用以下命令将 Deno 升级到最新版本:

deno upgrade

或升级到特定版本,例如 v1.3.0:

deno upgrade --version 1.30.0

以下大多数工具在所有版本中都可用,但更高版本可能具有更多功能和错误修复。

Deno 帮助

可以通过输入以下命令查看工具和选项列表:

deno help

读取-评估-打印循环 (REPL)

与 Node.js 一样,可以通过deno在终端中输入来访问 REPL 表达式评估控制台。您输入的每个表达式都会返回一个结果或undefined:

$ denoDeno 1.3.0exit using ctrl d or close()> const w = 'World';undefined> wWorld> console.log(`Hello ${w}!`);Hello World!undefined> close()$

通过使用光标键浏览表达式历史,可以重新输入以前输入的表达式。

依赖检查器

可以通过输入入口脚本的路径/URL 来deno info <module>查看所有模块依赖关系的树。<module>

考虑以下lib.js带有导出hello和sum函数的库代码:

// general library: lib.js/** * return "Hello <name>!" string * @module lib * @param {string} name * @returns {string} Hello <name>! */export function hello(name = 'Anonymous') {return `Hello ${ name.trim() }!`;};/** * Returns total of all arguments * @module lib * @param {...*} args * @returns {*} total */export function sum(...args) {return [...args].reduce((a, b) => ab);}

这些可以index.js在同一目录中的主入口脚本中使用:

// main entry script: index.js// import lib.js modulesimport { hello, sum } from './lib.js';constspr = sum('Site', 'Point', '.com', ' ', 'reader'),add = sum(1, 2, 3);// outputconsole.log( hello(spr) );console.log( 'total:', add );

运行结果deno run ./index.js:

$ deno run ./index.jsHello SitePoint.com reader!total: 6

index.js可以通过以下方式检查使用的依赖项deno info ./index.js:

$ deno info ./index.jslocal: /home/deno/testing/index.jstype: JavaScriptdeps:file:///home/deno/testing/index.js└── file:///home/deno/testing/lib.js

类似地,可以检查任何模块 URL 所需的依赖项,但请注意该模块将在首次使用时被下载并在本地缓存。例如:

$ deno info https://deno.land/std/hash/mod.tsDownload https://deno.land/std/hash/mod.tsDownload https://deno.land/std@0.65.0/hash/mod.tsDownload https://deno.land/std@0.65.0/hash/_wasm/hash.tsDownload https://deno.land/std@0.65.0/hash/hasher.tsDownload https://deno.land/std@0.65.0/hash/_wasm/wasm.jsDownload https://deno.land/std@0.65.0/encoding/hex.tsDownload https://deno.land/std@0.65.0/encoding/base64.tsdeps:https://deno.land/std/hash/mod.ts└─┬ https://deno.land/std@0.65.0/hash/_wasm/hash.ts├─┬ https://deno.land/std@0.65.0/hash/_wasm/wasm.js│ └── https://deno.land/std@0.65.0/encoding/base64.ts├── https://deno.land/std@0.65.0/encoding/hex.ts└── https://deno.land/std@0.65.0/encoding/base64.ts

有关更多信息,请参阅Deno 手册:依赖检查器。

Linter(语法检查器)

Deno 提供了一个 linter 来验证 JavaScript 和 TypeScript 代码。这是一个需要--unstable标志的不稳定功能,但使用时不会更改任何文件。

Linting 有助于发现不太明显的语法错误并确保代码符合您团队的标准。你可能已经在编辑器或命令行中使用了诸如ESLint 之类的 linter,但 Deno 在安装它的任何环境中都提供了另​一个选项。

要递归地检查当前目录和子目录中的所有.js文件.ts,请输入deno lint --unstable:

$ deno lint --unstable(no-extra-semi) Unnecessary semicolon.}; ^at /home/deno/testing/lib.js:13:1Found 1 problem

或者,您可以指定一个或多个文件来限制 linting。例如:

$ deno lint --unstable ./index.js$

有关更多信息,请参阅Deno 手册:Linter。它包括一个规则列表,您可以添加到代码注释中以忽略或强制执行特定语法。

测试赛跑者

Deno 有一个内置的测试运行器,用于对 JavaScript 或 TypeScript 函数进行单元测试。

测试在任何以、、、或扩展名命名<something>test的文件中定义。它必须进行一次或多次调用并传递测试名称字符串和测试函数。该函数可以是同步的或异步的,并使用各种断言实用程序来评估结果。.js.mjs.ts.jsx.tsxDeno.test

使用名为的文件创建一个新test子目录lib.test.js:

// test lib.js library// assertionsimport { assertEquals } from 'https://deno.land/std/testing/asserts.ts';// lib.js modulesimport { hello, sum } from '../lib.js';// hello functionDeno.test('lib/hello tests', () => {assertEquals( hello('Someone'), 'Hello Someone!');assertEquals( hello(), 'Hello Anonymous!' );});// sum integersDeno.test('lib/sum integer tests', () => {assertEquals( sum(1, 2, 3), 6 );assertEquals( sum(1, 2, 3, 4, 5, 6), 21 );});// sum stringsDeno.test('lib/sum string tests', () => {assertEquals( sum('a', 'b', 'c'), 'abc' );assertEquals( sum('A', 'b', 'C'), 'AbC' );});// sum mixed valuesDeno.test('lib/sum mixed tests', () => {assertEquals( sum('a', 1, 2), 'a12' );assertEquals( sum(1, 2, 'a'), '3a' );assertEquals( sum('an', null, [], 'ed'), 'annulled' );});

要从所有目录运行所有测试,请输入deno test. 或者运行存储在特定目录中的测试,使用deno test <dir>. 例如:

$ deno test ./testrunning 4 teststest lib/hello tests ... ok (4ms)test lib/sum integer tests ... ok (2ms)test lib/sum string tests ... ok (2ms)test lib/sum mixed tests ... ok (2ms)test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out (11ms)$

还--filter可以指定字符串或正则表达式以按名称限制测试。例如:

$ deno test --filter "hello" ./testrunning 1 teststest lib/hello tests ... ok (4ms)test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 3 filtered out (5ms)

--failfast通过传递一个选项,可以在第一次失败时停止长时间运行的测试。

有关更多信息,请参阅Deno 手册:测试。一些第三方测试模块也可用,包括Merlin和Ruhm,但这些仍然Deno.test在表面下使用。

V8 调试器

Deno 提供与 Node.js 相同的 V8 引擎和调试器。可以使用 Chrome 浏览器或VS Code附加到调试器,然后单步执行代码以查看变量和对象更改。

要启动调试器,请在第一行运行带有--inspect或--inspect-brk停止的脚本。如果您需要从网络上的其他设备连接到调试器,请添加其 IP 地址和端口,或者使用--inspect=0.0.0.0:9229. 例如:

$ deno run --inspect-brk=0.0.0.0:9229 ./index.jsDebugger listening on ws://0.0.0.0:9229/ws/ceb123...Debugger session started.

打开在新的 Chrome 选项卡中,deno脚本将显示为新的远程目标

注意:“dedicated DevTools for Node”不会连接到 Deno 的调试器,即使它们相似。

单击目标的检查链接以启动 DevTools。如果您使用过客户端调试,这将是熟悉的。Sources选项卡是最有用的,它允许您逐步执行代码:

代码格式化程序

内置的代码格式化程序以类似于Prettier的方式自动格式化 JavaScript 和 TypeScript 代码。Deno 的格式化程序也是固执己见的,目前无法配置选项。

要使用它,请输入deno fmt递归格式化每个子目录中的每个文件。例如:

$ deno fmt/home/deno/testing/index.js/home/deno/testing/test/lib.test.js/home/deno/testing/lib.js

或者,您可以格式化一个或多个单独的文件,例如deno fmt ./index.js.

如果您检查该lib.test.js文件,您会看到格式化程序已删除一些间距并将字符串转换为使用双引号 ( "):

// hello functionDeno.test("lib/hello tests", () => {assertEquals(hello("Someone"), "Hello Someone!");assertEquals(hello(), "Hello Anonymous!");});

// deno-fmt-ignore通过添加注释可以忽略单个代码块。例如:

// deno-fmt-ignoreconst bin = [1, 0, 0,0, 1, 0,0, 0, 1,];

// deno-fmt-ignore-file通过在代码顶部添加注释可以忽略整个文件。

有关更多信息,请参阅Deno 手册:代码格式化程序。

警告!自动格式化会对 JSDoc 注释产生不利影响。

文档生成器

Deno 可以从源代码中的JSDoc 注释生成文档,解释函数的用途、参数和返回值。目前,Deno 只会为具有哪些export功能的模块生成文档。例如:

$ deno doc ./lib.jsDefined in file:///home/deno/testing/lib.js:9:0function hello(name)return "Hello <name>!" string@module lib@param {string} name@returns {string} Hello <name>!Defined in file:///home/deno/testing/lib.js:21:0function sum(...args)Returns total of all arguments@module lib@param {...*} args@returns {*} total$

添加--json标志以 JSON 格式输出文档。

脚本捆绑

您的主脚本及其所有依赖项可以使用以下方法捆绑到一个文件中:

deno bundle <main-script> <output-script>

例如:

$ deno bundle ./index.js ./index.bundle.jsBundle file:///home/deno/testing/index.jsEmit "./index.bundle.js" (3.13 KB)

然后可以执行生成的脚本:

$ deno run ./index.bundle.jsHello SitePoint.com reader!total: 6

在将脚本分发给最终用户或将最终代码库部署到实时服务器时,这可能很有用。

注意:捆绑时顶级await调用可能会失败,因此async必须添加包装函数。这是一个已知问题,将在未来的 Deno 版本中修复。

有关更多信息,请参阅Deno 手册:捆绑。

脚本安装程序

Deno 脚本可以全局安装,因此可以从文件系统中的任何位置运行。它类似于安装全局 Node.js 模块,但更简单易用。

deno install必须通过命令:

  1. 任何必需的运行时权限标志,例如--allow-read、--allow-write或--allow-net.
  2. 一个可选的已安装脚本名称,带有--name <scriptname>.
  3. 一个可选的安装根文件夹,带有--root <path>. 如果未设置,Deno 会将脚本安装到DENO_INSTALL_ROOT环境变量中设置的路径或$HOME/.deno/bin/.
  4. 模块路径或 URL。

上面的示例脚本可以安装:

$ deno install --name myscript ./index.js✅ Successfully installed myscript/home/deno/.deno/bin/myscript

myscript在目录中创建一个文件.deno/bin/,其内容如下:

#!/bin/sh# generated by deno installdeno "run" "file:///home/deno/testing/index.js" "$@"

myscript现在可以从系统上的任何位置运行。例如:

cd ~$ myscriptHello SitePoint.com reader!total: 6

这个过程可以很容易地告诉用户如何从已发布的 URL 安装您的应用程序。例如:

deno install --name myapp https://myserver.com/myapp.jsmyapp

Deno 目前不提供uninstallorremove命令。删除脚本的唯一方法是从.deno/bin/目录或安装位置手动删除生成的文件。

有关更多信息,请参阅Deno 手册:脚本安装程序。

完整的 Deno 工具包?

Deno 的工具是新的,有些是初级的,但是记录在案的“标准”方法有好处。Node.js 提供了许多第三方选项,但这可能导致选择瘫痪或持续的解决方案切换。您是否坚持使用相同的 Node.js 测试套件?

但是,请注意:随着 Deno 使用量的增长,这些内置工具可能会迅速发展。

    推荐阅读
  • 空气含量中最多的气体(空气含量中最多的气体介绍)

    空气中含量最多的气体是氮气,氮气约占空气体积分数的百分比约为78%。通过实验测定,空气的成分按体积计算,氮气大约占78%、氧气占21%、稀有气体0.94%、二氧化碳0.03%、其他气体和杂质0.03%,也就是说空气中含量最多的物质是氮气。氮气化学性质很不活泼,在高温高压及催化剂条件下才能和氢气反应生成氨气;在放电的情况下才能和氧气化合生成一氧化氮;即使Ca、Mg、Sr和Ba等活泼金属也只有在加热的情形下才能与其反应。

  • 文思豆腐羹如何做好吃(文思豆腐羹用什么豆腐)

    文思豆腐是一道有名的淮扬菜,需要的就是精湛的刀工,这样做出的文思豆腐会有嫩滑的口感,打造入口即化的口感。文思豆腐羹如何做好吃文思豆腐羹材料和做法步骤一、文思豆腐羹材料准备好豆腐400克,鸡脯肉,火腿还有香菇,再有准备好生菜,冬笋,调料需要准备盐和味精。

  • 结构性存款可以买理财吗(结构性存款是存款吗)

    雪球产品就是今年年初监管向信托公司进行窗口指导,要求叫停的产品。简单的说,这是一种高风险的金融衍生品,它通过持有一定结构的金融衍生品,来实现在某一特定情况下获利。这样的投资结构就能保证我不论涨,还是跌,只要在一定幅度内都可以盈利。交易期权等金融衍生品,是非常高风险的投资。

  • 正言厉色意思(正言厉色的意思)

    下面内容希望能帮助到你,我们来一起看看吧!正言厉色意思正言厉色,汉语成语,拼音是zhènɡyánlìsè,意思是形容板着脸,神情非常严厉。出自《汉书·王莽传》。宝玉突然想出一个主意,一本正经地给她讲扬州黛山林子洞耗子精偷香芋的故事,黛玉见他正言厉色,以为真有其事,后来才发现原来是在取笑她。

  • 面谈调薪酬有什么技巧(跟老板谈调薪的技巧有哪些)

    如果你在老板心目中分量很大,一般老板都会给你加薪的。和老板谈加薪时目的一定要明确,让老板知道你只是为了加薪,而不是辞职走人。和老板谈加薪后,一定要给老板一个考虑的时间,不要咄咄逼人,逼着老板加薪。老板也要有足够的思考时间,来考虑你是否值得加薪,给你加薪后对公司有没有什么影响。不仅口头上要表示感谢,工作中要更加努力,让老板觉得给你加薪是值得的。

  • 杏花有没有香味(杏花闻起来会特别香吗)

    杏树是中国著名的观赏树木,可配植于庭前、墙隅、道路旁、水边,也可群植、片植于山坡、水畔,是春季主要的观赏树种。杏花直径2至3厘米,先于叶开放。花梗短,长1至3毫米,被短柔毛。花萼紫绿色,萼筒圆筒形,外面基部被短柔毛。萼片卵形至卵状长圆形,先端急尖或圆钝,花后反折。花瓣圆形至倒卵形,白色或带红色,具短爪。

  • 减肥减肚子的方法(怎么减肚子呢)

    减肥减肚子的方法食用健康食品:酸奶与发酵的牛奶能激活消化必须的物质,有助于改善肠道微生物系统,从而防止腹部隆起。走路、喝水、按摩:走路及喝水有利腹部扁平。

  • 新坑翡翠手镯多少钱(新坑翡翠手镯的价格)

    新坑翡翠手镯多少钱?新坑翡翠手镯多少钱翡翠手镯作为大件翡翠制品,用料特别多,只有大块、质量好的翡翠原石才能打造成手镯,因此翡翠手镯的价格都比较高,商家们拿到质量比较好的原石也尽可能打造成手镯。具体到新坑种翡翠,因为大多数新坑种翡翠透明度都不高,质地也不够细腻,因此种水一般都是以糯种或豆种为主,极少出现冰种或冰种以上的种水,这样的翡翠价格价格自然不会太高,一个品质比较好的糯种翡翠手镯大概在十万以内。

  • 宁波毛蚶做法水煮几分钟(毛蚶煮多长时间可以吃)

    宁波毛蚶做法水煮几分钟毛蚬是很多人喜欢吃的食物,不过建议大家在做之前都要先用开水煮以下。强精益气,提高精液质量,增强精子活力。适用于治疗肾阳虚所致的阳痿、腰痛、小便频数及补五脏之气不足。可治疗全身水肿,小便不利等。能软化和保护血管,有降低人体中血脂和胆固醇的作用。

  • 2022洛阳湿地公园最新名单 洛阳生态公园最新消息

    国家级湿地自然保护区河南黄河湿地国家级自然保护区,面积24000公顷。国家级湿地公园嵩县陆浑湖国家湿地公园,面积4222.39公顷伊川伊河国家湿地公园,面积1384.36公顷。