从 Python 到 Dart - 第 2 天,认识 dart CLI
如果没有同名的命令行实用程序 (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
进入全屏模式 退出全屏模式
该命令的输出非常详细,可以很容易地理解运行测试时出错的地方和原因。这是它的样子:
[
](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) 允许您控制将运行哪些测试。如果指定了多个标志,则一次满足所有条件的测试将被执行。
[
](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
进入全屏模式 退出全屏模式
[
](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 进行比较。
更多推荐

所有评论(0)