我可以写吗? 是。 您可以

创作还没有准备好,它们是没有思想的……。
Elixir是一种功能性编程语言,用于构建分布式,可伸缩和容错的系统应用程序。 使用phoenix elixir Web框架,您可以开发网站。 Elixir还用于嵌入式系统中。 这只是关于the剂的简短介绍。
创建长生不老药包不是一门火箭科学。
创建新项目
打开命令行,并确保已将elixir与elixir -v一起安装,并与mix -v混合,然后可以按以下方式创建新项目。
混合新的project_name
在上面的命令中, project_name是您的项目的名称。 在这里,我创建一个项目,并将深入解释该项目。 我的项目名称是rocket让我们开始吧。
混合新火箭

这将创建一些对于项目必不可少的文件夹和文件。 您可以在下面的截图中查看。 将目录更改为项目目录,以cd rocket身份执行,然后执行命令mix test

项目结构

/Config/config.exs
该目录带有一个文件config.exs 。 该名称本身表明它代表目的模块的配置。 您还可以在这里配置什么? 一切都可以。
该文件主要负责您的应用程序及其与模块Mix.Config模块的依赖关系。 use Mix.Config
配置范围
在将任何依赖项加载到项目之前,先加载此配置。 此配置文件仅在该项目中使用。 例如,如果有任何其他应用程序依赖于此项目,则不会加载此文件,也不会影响依赖于此项目的父项目。 对于任何第三方,都应在mix.exs文件中完成。
如何配置您的应用程序?
config:rocket,作者:“ blackode”
在这里:rocket是我们的project_name author是密钥,而blackode是密钥的值。 您可以通过以下方式在应用程序中访问此配置:
Application.get_env(:rocket,:author)
第三方应用程序配置
您还可以像配置应用程序一样配置第三方应用程序。
config:typex,版本:“ 0.1.1”
就像上面的:typex是第三方模块,您将` version值声明为o.1.1您还可以将多个值声明为list
环境配置导入
您也可以导入相对于该目录的配置文件。 例如,您可以根据所使用的环境导入配置文件。首先,您必须定义配置文件。
Config/dev.exs在开发环境中工作时会加载此文件配置。 它会覆盖当前配置。
Config/test.exs在testing环境中会加载此文件配置。 它还会覆盖当前配置。
由于导入的配置文件会覆盖此处定义的当前配置,因此这就是您最后导入它们的原因。 您可以按以下方式导入它们……
import_config“#{Mix.env} .exs”
默认情况下如上评论。 如果要导入它们,则可以取消注释。 Mix.env返回您正在运行项目的环境。 例如,如果您的测试返回了test并且如果您在开发模式下使用它,则返回了dev因此文件看起来像以下方式:
import_config“ test.exs”
import_config“ dev.exs”
mix.exs
这是项目元数据文件。 在这里,您可以向项目中添加依赖项,重要链接(如document , github等),也可以在此处描述项目。 您可以添加一些别名以使用mix工具自动运行。 让我们深入研究
def project do
[app::rocket,
版本:“ 0.1.0”,
长生不老药:“〜> 1.4-rc”,
build_embedded:Mix.env ==:prod,
start_permanent:Mix.env ==:prod,
deps:deps()]
结束
在这里定义项目。 您还可以添加以下部分:
[
描述:“飞向天空”,
别名:aliases(),
包:包()
]
添加这些部分后,您可以添加功能。 为了便于说明,我们直接添加了二进制文件,因此无需定义函数,但是对于aliases和package我们将函数定义为aliases/0和package/0让我们对其进行定义。
defp包做
[
维护者:[“ Blackode”],
许可证:[“ MIT”],
链接:%{“ GitHub” =>“ https://github.com/blackode/printex”}
]
结束
defp别名可以
[c:“编译”]
结束
可以这样使用aliases 。 通常,我们使用混合工具mix compile项目编译为mix compile因为我们已经为编译创建了alias ,您可以将其用作mix c来编译项目。
添加依赖项
您可以通过以下方式添加项目依赖项
十六进制包
添加十六进制包是如此简单。 您可以看到默认情况下为defp deps/0的私有定义,它返回空列表[]您可以添加类似
defp deps做
[
{:my_dep,“〜> 0.3.0”}
]
结束
如果您不知道版本号,则可以指定为{:my_dep,">= 0.0.0 "}这是安装指定软件包的最新版本的另一种方法。
Github:git /路径仓库
defp deps做
[
{:my_dep,git:“ https://github.com/elixir-lang/my_dep.git”,标记:“ 0.1.0”},
]
结束
要么
defp deps做
[
{:ex_doc,github:“ elixir-lang / ex_doc”,override:true}
]
结束
您可以选择指定何时使用依赖项。 假设只想在开发模式下添加依赖项,则可以only添加如下所示的选项。
defp deps做
[{:ex_doc,github:“ elixir-lang / ex_doc”,覆盖:true,仅:: dev},
{:earmark,“〜> 1.0”,仅::dev},
{:dialyxir,“〜> 0.3”,仅:[:dev]}
]
结束
override选项将覆盖具有指定软件包的其他任何软件包。 only选项接受选项列表,例如[:dev,:test]
键入mix help deps以获取更多示例和选项。
解放
/lib/rocket.ex
库目录是您所有编码内容所在的地方。 默认情况下,您可以看到与项目名称相同的文件。 由于我们的项目名称是/lib/rocket.ex ,它生成了一个名为/lib/rocket.ex文件。您可以添加文件夹和文件。 例如,您想将rocket文件夹添加到lib目录中,并且所有模块名称都是像Rocket.Module这样的命名空间。
例子
考虑/lib/rocket目录中有两个文件,分别是speed.ex和trans.ex您必须将模块名称定义为
/lib/rocket/speed.ex
defmodule Rocket.Speed做
...
结束
对于trans.ex也是trans.ex 。 这样就不会有任何名称空间问题。
测试中
在长生不老药中测试非常容易。 您在lib文件夹中添加的每个文件都将在测试目录中带有后缀_test和扩展名.exs的自己的测试文件。
命名约定
假设如果lib目录中的文件名是rocket.ex那么测试文件在test目录中将是rocket_test.exs 。 这是遵循的命名约定。
Elixir使用ExUnit.Case测试框架。 您可以按以下方式添加测试单位…
/test/rocket_test.exs
defmodule RocketTest做
使用ExUnit.Case
doctest火箭
测试“我的测试”
断言1 +1 == 2
结束
测试“另一个测试”
断言0 == 0
结束
结束
您可以通过从项目根目录执行命令mix test来mix test项目。
文献资料
Elixir提供了一个名为exdoc的模块,用于生成文档。 您无需再写说明每个模块。
你该怎么办?
在编写模块时,您必须提供@moduledoc和@doc部分,它们将为您生成文档。
示例将如下所示。
defmodule火箭做
@moduledoc〜S“”“
该模块有助于发射火箭
一些基本信息。
它还有助于获得更多信息,例如火箭的结构和用途。
“”
@doc〜S“”“
返回传递的参数类型的字符串表示形式
## 例子
iex> Rocket.launch(:mars)
{:ok,:landed}
“”
@spec launc(atom)::元组
def launch(place)do
#代码逻辑...
结束
结束
编写完所有模块后,转到命令行并保留在项目根目录中,然后键入command作为
混合文档
这会生成doc目录,其中包含一些文件,如api_reference.html index.html rocket.html以及项目根目录中的诸如dist等fonts的目录。 index.html是文档的入口点。
发布到Hex.pm
最后也是最后一步是将项目发布到hex.pm软件包管理器中,这非常简单,只需要执行一些命令即可。
注册
首先,您必须是注册用户才能将软件包发布到hex.pm。 如果您已经注册,则可以跳过此部分。 要进行注册,请转到命令行并执行以下命令
混合十六进制用户注册
然后它将询问您一些详细信息,包括: 用户名,电子邮件,密码,密码确认

建筑工程
项目建设并不像您想的那么难。 只需执行命令
混合hex.build
出版
从项目根目录执行以下命令。 确保已使用mix docs命令生成了docs,然后将其发布。
混合hex.publish
它将要求您输入密码。 输入注册时拥有的密码。 如果一切顺利,您将看到您的软件包位于hex.pm
用长生不老药难写包裹吗? 我希望不是。 你呢 ? 停止读并写一个。
从小开始,以大结束。
看视频
谢谢阅读。
加入我们的电报频道并支持我们。
破坏者
饮食🍕—代码🐞—睡眠😴编码资源,技巧,视频,文章和新闻-编码资料的宝藏我们关注&… t.me

