如果没有同名的命令行实用程序 (CLI),Dart 语言是不可想象的。这是一个成熟的工具,它的功能大大简化了开发人员的生活,远远超过了 Python 解释器的内置功能。

可用的dart功能包括项目创建、源代码分析和格式化,甚至将包发布到pub.dev等。

请记住,这个循环的目标不是从头开始完全沉浸在 Dart 中,而是让那些已经知道如何开发的人快速熟悉,特别是 Python 语言。

项目创建

Python没有内置自动化创建项目的能力,一切都得手动完成:创建文件夹结构,在requirements.txt中描述依赖关系。当然也有第三方应用让这个过程更简单,比如诗歌或Cookiecutter。但是,它们是第三方的,需要安装在系统或虚拟环境中。 Dart 内置了这个功能。

飞镖创建

因此,dart create是一个 CLI 实用程序,可以帮助您从指定的模板创建项目。

$ dart create project_name

进入全屏模式 退出全屏模式

默认情况下,这是一个简单的控制台应用程序,例如dart-sass。然而,这还不是全部。使用-t选项,您可以指定用于创建的模板,它可以是:

| console-simple|一个简单的控制台应用程序(基本模板)。 |

| ---------------- | -------------------------------------------------- ----- |

| console-full|带有测试的控制台应用程序。 |

| package-simple| Dart 库或应用程序的起点。 |

| server-shelf|服务器基于架。 |

| web-simple|具有核心库的 Web 应用程序。 |

运行时,dart create将首先创建项目结构,然后尝试从pub.dev加载所有需要的库。可以通过在调用命令时指定--no-pub标志来更改此行为。

来自 Python 世界的类比:poetry new project_name

分析和格式化

在一个项目上与几个人一起工作时,经常需要使用单一风格的代码设计、编写注释、使用变量名等。在 Python 世界中,我们使用 linterflake8,各种格式化程序(黑色,yapf,autopep8) 和mypy用于类型检查。 Dart 如何帮助应对这些挑战?

飞镖分析

该实用程序允许您对源代码执行静态分析并指出错误和缺点。

默认情况下,调用将运行检查并指示错误和警告,指示需要使用--fatal-infos标志响应info级别。

$ dart analyze [<DIRECTORY> | <DART_FILE>]

进入全屏模式 退出全屏模式

可以使用配置文件或代码中的注释来调整分析器的行为。

飞镖格式

使用该命令,我们可以根据Dart 指南设置我们的源代码样式。

$ dart format

进入全屏模式 退出全屏模式

此命令将覆盖文件,“正确”格式化它们。

飞镖修复

$ dart fix

进入全屏模式 退出全屏模式

对源代码文件应用自动修复,修复两种类型的错误:

  • u200e分析与自动修复相关的问题(有时u200eu200e称为_快速修复_或_代码操作_))

  • u200e包 API 传输信息相关问题u200e

要查看更改,请指定--dry-run标志;申请--apply;此命令没有 default 行为。

建筑/编译

飞镖跑

启动 Dart 应用程序非常简单,只需在终端中运行以下命令:

$ dart run bin/myapp.dart

进入全屏模式 退出全屏模式

如果你在一个包内,并且在bin目录下有一个与包名同名的 dart 文件,那么应用程序可以在不指定文件的情况下完成:

$dart run

进入全屏模式 退出全屏模式

也可以从依赖项中指定的包运行应用程序到当前。例如,如果您的应用程序依赖于包foo,要运行此包中的程序,只需调用以下命令:

$ dart run foo

进入全屏模式 退出全屏模式

或者在foo包中指定一个不同的程序:

$ dart run foo:bar

进入全屏模式 退出全屏模式

参数和标志

通常在开发时,您需要将参数传递给main()函数,为此您需要在指定文件后在启动时传递它们:

$ dart run bin/myapp.dart arg1 arg2

进入全屏模式 退出全屏模式

您还可以指定其他标志,例如,调试应用程序:

$ dart run --enable-asserts bin/myapp.dart arg1 arg2

进入全屏模式 退出全屏模式

飞镖编译

dart compile命令允许你为目标平台编译一个 Dart 程序。您使用子命令指定的输出可以包括 Dart 运行时或模块(也称为快照)。

$ dart compile

进入全屏模式 退出全屏模式

| 子命令 |结论 |说明 |

| ------------- | ---------------- | -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------- |

| exe|可执行文件 |一个独立的、特定于体系结构的可执行文件,包含编译为本机代码的源代码和一个小型 Dart 运行时。 |

| aot-snapshot| AOT 模块 |一个特定于架构的文件,包含编译为本机代码的源代码,但不包含 Dart 运行时。 |

| jit-snapshot| JIT 模块 |一个特定于体系结构的文件,其中包含整个源代码的中间表示,以及在程序训练运行期间运行的源代码的优化表示。 JIT 代码可能比 AOT 代码具有更高的峰值性能,但这取决于训练运行。 |

| kernel|内核模块 |源代码的可移植中间表示。更多|

| js| JavaScript |带有应用程序的 JavaScript 文件。更多|

飞镖测试

每个程序都需要测试,这将减少开发过程中的错误数量并提高应用程序的质量。对于 Python,有一个出色的框架可以简化测试、编写和执行工作 -Pytest。用它运行测试非常简单:

$ pytest

进入全屏模式 退出全屏模式

该命令的输出非常详细,可以很容易地理解运行测试时出错的地方和原因。这是它的样子:

[Pytest 示例](https://res.cloudinary.com/practicaldev/image/fetch/s--E3UzgcOy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/mvoaafpi86u7x4oir16a.png)

Dart 中的测试是使用dart test命令完成的。

$ dart test

进入全屏模式 退出全屏模式

几个标志,如--name(-n)、--tags(-t) 或--exclude-tags(-x) 允许您控制将运行哪些测试。如果指定了多个标志,则一次满足所有条件的测试将被执行。

[dart 测试示例](https://res.cloudinary.com/practicaldev/image/fetch/s--5BRpHzdL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/fjo69t4d06peyrujo04u.png)

包管理

飞镖酒吧

Python 有一个内置的pip实用程序,可让您轻松管理包、安装、升级和删除它们。为了获得更多控制,还有诗歌等第三方工具。 Dart 还有一个工具,可以更轻松地处理外部依赖项 - 这是dart doc

$ dart pub

进入全屏模式 退出全屏模式

dart pub的可能性比安装和删除软件包要广泛得多。有了它,你可以管理本地包缓存,发布包到pub.dev等。

例如,考虑在 Python 中安装一个包:

$ python3 -m pip install django

进入全屏模式 退出全屏模式

该命令将安装最新版本的 Django 包,但是,它不会将其写为依赖项,这意味着在新安装时,您需要以某种方式了解此依赖项。

在 Dart 中也可以这样做:

$ dart pub add shelf

进入全屏模式 退出全屏模式

在这种情况下,包Shelf将被添加到项目中,指定为pubspec.yml中的依赖项并加载到缓存中。

Python 中的类似物:pip、诗歌。

文档

飞镖文档

应用程序和库开发的一个重要部分是功能和源代码的文档。为此,Dart 有一个特殊的实用程序,它非常容易运行:

$ dart doc

进入全屏模式 退出全屏模式

[dart doc 文档生成的示例](https://res.cloudinary.com/practicaldev/image/fetch/s--O9Z-cFtY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https ://dev-to-uploads.s3.amazonaws.com/uploads/articles/bbdoiqw0tpoylnui7nje.png)

Dart 允许您在代码中使用注释和标记来描述类、函数、模块和其他结构。我们将在另一篇文章中更详细地讨论这些内容,但现在,我们将提到 Dart 处理特殊的文档注释。您可以在文章Effective Dart中阅读有关如何使文档尽可能有效的信息。

Python 中的类比可以是生成器Sphinx或pdoc,它们的能力远远超出了dart doc的能力。

结论

我们回顾了一些使用dart实用程序可用的命令,其中一些需要更深入的了解。但是,即使是这种粗略的一瞥也可以让开发人员了解其“开箱即用”的功能和便利性。

接下来,我们将开始深入研究 Dart 语言并将其与 Python 进行比较。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐