学习elixir(1)

2024-05-26 07:36
文章标签 学习 elixir

本文主要是介绍学习elixir(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

突然发现elixir很有趣,所以想记录以下学习内容

# .ex .exs file
elixir simple.exs
# mix new <app_name>
# mix deps.get; mix deps.update; mix deps.compile
# 怎么使用mix escript.build
# eg. 在mix.exs添加escript: [main_module: IntentionCLI, name: "intention"]
# livebook 
# 学习Phoenix web framework

以下是一些官方文档机器翻译(不具有可读性)

  • https://hexdocs.pm/phoenix/overview.html
Phoenix是一个用Elixir编写的web开发框架,它实现了服务器端的模型视图控制器(MVC)模式。它的许多组件和概念对于我们这些有过Ruby on Rails或Python的Django等其他web框架经验的人来说似乎很熟悉。
Phoenix提供了最好的两个世界——高开发效率和高应用程序性能。它也有一些有趣的新变化,如实现实时功能的通道和高速预编译模板。
如果你已经熟悉了仙丹,那太好了!如果没有,还有很多地方可以学习。灵药指南和灵药学习资源页面是两个很好的起点。
你正在看的指南提供了制造凤凰的所有部分的概述。以下是他们所提供服务的概要:
简介-你正在阅读的指南。它们将涵盖如何启动和运行您的第一个应用程序
指南——涵盖Phoenix和Phoenix应用程序中主要组件的深入指南
认证-深入指南,介绍如何使用mix phx.gen.auth
实时组件——涵盖Phoenix内置实时组件的深入指南
测试-关于测试的深入指南
部署-关于部署的深入指南
How-to's -关于如何用Phoenix实现某些事情的文章集
如果你想以EPUB的形式阅读这些指南,请点击这里!
注意,这些指南不是对Phoenix的逐步介绍。如果你想要一个更结构化的方法来学习框架,我们有一个很大的社区和许多书籍、课程和截屏。请查看我们的社区页面获取完整列表。
我们去装凤凰吧
  • https://hexdocs.pm/phoenix/installation.html
为了构建Phoenix应用程序,我们需要在操作系统中安装一些依赖项:Erlang VM和Elixir编程语言
数据库——Phoenix推荐PostgreSQL,但你也可以选择其他数据库或根本不用数据库
和其他可选软件包。请查看此列表,并确保为您的系统安装任何必要的东西。预先安装依赖项可以防止以后出现令人沮丧的问题。
灵药1.14或更高版本Phoenix是用Elixir编写的,我们的应用程序代码也将使用Elixir编写。没有它,我们在Phoenix应用程序中走不远!Elixir网站有一个很棒的安装页面可以提供帮助。如果我们第一次安装了Elixir,我们还需要安装Hex软件包管理器。Hex是运行Phoenix应用程序(通过安装依赖项)和安装我们可能需要的任何额外依赖项所必需的。以下是安装Hex的命令(如果您已经安装了Hex,它会将Hex升级到最新版本):mix local.hexErlang 24或更高版本Elixir代码编译成Erlang字节代码,以便在Erlang虚拟机上运行。没有Erlang,Elixir代码就没有虚拟机可以运行,所以我们也需要安装Erlang。当我们使用Elixir安装页面上的说明安装Elixir时,我们通常也会得到Erlang。如果Erlang没有随Elixir一起安装,请参阅Elixir安装页面的Erlang说明部分以获取说明。
凤凰要检查我们使用的是Elixir 1.14和Erlang 24或更高版本,请运行:酏剂-v
Erlang/OTP 24【ERTs-12.0】【源代码】【64位】【smp:8:8】【异步线程:10】【hipe】【内核轮询:false】【dtrace】长生不老药有了Elixir和Erlang之后,我们就可以安装Phoenix应用程序生成器了:mix archive.install hex phx_newphx.new生成器现在可用于在下一个指南《启动和运行》中生成新的应用程序。下面提到的标志是生成器的命令行选项;通过调用mix help phx.new查看所有可用选项。
一种数据库系统PostgreSQL是一个关系数据库服务器。Phoenix将应用程序配置为默认使用它,但我们可以在创建新应用程序时通过传递- database标志切换到MySQL、MSSQL或SQLite3。为了与数据库对话,Phoenix应用程序使用了另一个名为Ecto的灵药包。如果您不打算在应用程序中使用数据库,可以传递- no-ecto标志。但是,如果您刚刚开始使用Phoenix,我们建议您安装PostgreSQL并确保它正在运行。PostgreSQL wiki有许多不同系统的安装指南。
inotify工具(针对Linux用户)Phoenix提供了一个非常方便的功能,叫做实时重装。当您更改视图或资源时,它会自动在浏览器中重新加载页面。为了让这项功能发挥作用,您需要一个文件系统监视器。macOS和Windows用户已经有了文件系统监视器,但是Linux用户必须安装inotify-tools。请参考inotify-tools wiki获取特定于发行版的安装说明。
摘要在本节结束时,您必须已经安装了Elixir、Hex、Phoenix和PostgreSQL。现在我们已经安装好了所有的东西,让我们创建第一个Phoenix应用程序并开始运行。
  • https://hexdocs.pm/phoenix/up_and_running.html
运行正常的让我们尽快启动并运行一个Phoenix应用程序。开始之前,请花几分钟时间阅读安装指南。通过预先安装任何必要的依赖项,我们将能够让我们的应用程序顺利启动和运行。我们可以从任何目录运行mix phx.new来引导我们的Phoenix应用程序。Phoenix将接受我们新项目目录的绝对或相对路径。假设我们的应用程序的名称是hello,让我们运行以下命令:mix phx.new hello关于Ecto的说明:Ecto允许我们的Phoenix应用程序与数据存储进行通信,比如PostgreSQL、MySQL等等。如果我们的应用程序不需要这个组件,我们可以通过将- no-ecto标志传递给mix phx.new来跳过这个依赖项。要了解更多关于mix phx.new的内容,你可以阅读mix任务指南。mix phx.new hello
*创建hello/config/config.exs
*创建hello/config/dev.exs
*创建hello/config/prod.exs
...获取并安装依赖项?[Yn]Phoenix生成目录结构和我们的应用程序需要的所有文件。Phoenix提倡使用git作为版本控制软件:在生成的文件中,我们发现了一个. gitignore。我们可以将git初始化到我们的存储库中,并立即添加和提交所有没有被标记为忽略的文件。完成后,它会问我们是否希望它为我们安装依赖项。让我们同意吧。获取并安装依赖项?[Yn] Y
*运行mix deps.get
*运行混合资产.设置
*运行mix deps.compile我们快到了!缺少以下步骤:$ cd你好然后在config/dev.exs中配置您的数据库并运行:$ mix ecto.create启动您的Phoenix应用程序:$ mix phx.server您也可以在IEx (Interactive Elixir)中运行您的应用程序,如下所示:$ iex -S mix phx.server一旦我们的依赖项被安装,任务将提示我们进入我们的项目目录并启动我们的应用程序。
Phoenix假设我们的PostgreSQL数据库将有一个postgres用户帐户,该帐户具有正确的权限和密码“postgres”。如果不是这种情况,请参阅混合任务指南以了解有关混合ecto.create任务的更多信息。好吧,我们试试看。首先,我们将cd放入刚刚创建的hello/目录:cd你好现在我们将创建我们的数据库:mix ecto.create
正在编译13个文件(。ex)
生成的hello应用程序
你好的数据库。回购已创建如果无法创建数据库,请参见mix ecto.create的指南,了解一般故障排除。注意:如果这是您第一次运行这个命令,Phoenix可能还会要求安装Rebar。继续安装,因为Rebar用于构建Erlang包。最后,我们将启动Phoenix服务器:mix phx.server
[信息]运行HelloWeb。127.0.0.1:4000 (http)上带有cowboy 2.9.0的端点
[信息]访问HelloWeb。http://localhost:4000上的端点
[观察]构建完成,正在观察更改...
...如果我们在生成新的应用程序时选择不让Phoenix安装我们的依赖项,那么当我们确实想安装它们时,mix phx.new任务会提示我们采取必要的步骤。获取并安装依赖项?[Yn] n我们快到了!缺少以下步骤:$ cd你好
$ mix deps.get然后在config/dev.exs中配置您的数据库并运行:$ mix ecto.create启动您的Phoenix应用程序:$ mix phx.server您也可以在IEx (Interactive Elixir)中运行您的应用程序,如下所示:$ iex -S mix phx.server默认情况下,Phoenix接受端口4000上的请求。如果我们将最喜欢的web浏览器指向http://localhost:4000,我们应该会看到Phoenix Framework的欢迎页面。
如果你的屏幕看起来像上面的图像,那么恭喜你!您现在有了一个可以工作的Phoenix应用程序。如果您看不到上面的页面,请尝试通过http://127.0.0.1:4000访问它,然后确保您的操作系统已将“本地主机”定义为“127.0.0.1”。为了停止它,我们按了两次ctrl-c。现在您已经准备好探索凤凰城提供的世界了!查看我们的社区页面,获取书籍、视频、课程等信息。或者,您可以继续阅读这些指南,快速了解构成Phoenix应用程序的所有部分。如果是这样的话,你可以以任何顺序阅读指南,或者从解释Phoenix目录结构的指南开始。
  • https://hexdocs.pm/phoenix/packages_glossary.html
默认情况下,Phoenix应用程序依赖于几个具有不同用途的包。这个页面是您作为Phoenix开发人员可能使用的不同软件包的快速参考。主要的软件包有:一种集成查询和数据库包装器的语言Phoenix-Phoenix web框架(这些文档)Phoenix LiveView -使用服务器渲染的HTML构建丰富的实时用户体验。LiveView项目还定义了Phoenix。组件和HEEx模板引擎,用于在常规和实时应用程序中呈现HTML内容插件规范和构建可组合模块web应用程序的便利性。这是负责连接抽象和常规请求-响应生命周期的包您还将使用以下内容:ExUnit - Elixir的内置测试框架Gettext -通过Gettext实现国际化和本地化Swoosh -一个用于编写、发送和测试电子邮件的库,也由mix phx.gen.auth使用当在幕后窥视时,您会发现这些库在Phoenix应用程序中扮演着重要的角色:Phoenix HTML -安全使用HTML和表单的构建块Phoenix Ecto插件和协议实现一个支持在线状态的分布式发布/订阅系统关于仪器仪表和监控,请查看:Phoenix live dashboard-Phoenix开发人员的实时性能监控和调试工具遥测指标-基于遥测事件定义指标的通用界面
  • https://hexdocs.pm/phoenix/directory_structure.html
要求:本指南要求您已经完成了入门指南并启动和运行了Phoenix应用程序。当我们使用mix phx.new生成一个新的Phoenix应用程序时,它会构建一个顶级目录结构,如下所示:├──_建筑
├──资产公司
├──配置
├──警察局
├──自由报
│ ├──你好
│ ├── hello.ex
│ ├── hello_web
│ └── hello_web.ex
├──私立学校
└──试验我们将逐一查看这些目录:_build -由mix命令行工具创建的目录,作为保存所有编译工件的Elixir的一部分提供。正如我们在“启动和运行”中看到的那样,mix是您的应用程序的主界面。我们使用Mix来编译代码、创建数据库、运行服务器等等。此目录不得签入版本控制,并且可以随时移除。移除它将强制Mix从头开始重新构建应用程序。资产——保存前端资产源代码的目录,通常是JavaScript和CSS。esbuild工具会自动捆绑这些源代码。像图像和字体这样的静态文件放在priv/static中。保存项目配置的目录。config/config.exs文件是配置的入口点。在config/config.exs的末尾,它导入特定于环境的配置,这些配置可以在config/dev.exs、config/test.exs和config/prod.exs中找到。最后,执行config/runtime。exs,这是读取机密和其他动态配置的最佳位置。deps -包含我们所有混合依赖项的目录。您可以在defp deps do函数定义中找到mix.exs文件中列出的所有依赖项。此目录不得签入版本控制,并且可以随时移除。移除它将强制Mix从头开始下载所有dep。lib -保存应用程序源代码的目录。这个目录分为两个子目录,lib/hello和lib/hello_web。lib/hello目录将负责托管您的所有业务逻辑和业务域。它通常直接与数据库交互——它是模型-视图-控制器(MVC)架构中的“模型”。lib/hello_web负责向世界展示您的业务领域,在本例中是通过web应用程序。它同时拥有MVC的视图和控制器。我们将在下一节中更详细地讨论这些目录的内容。priv——一个目录,保存生产中所需的所有资源,但不是源代码的直接组成部分。您通常将数据库脚本、翻译文件、图像等保存在这里。默认情况下,从assets目录中的文件创建的生成资产放在priv/static/assets中。test -包含我们所有应用程序测试的目录。它通常反映了lib中的相同结构。lib/hello目录lib/hello目录托管您的所有业务域。因为我们的项目还没有任何业务逻辑,所以目录大部分是空的。您只会找到三个文件:lib/你好
├──应用程序
├──·梅勒
└──证券交易所lib/hello/application.ex文件定义了一个名为Hello.Application的Elixir应用程序。你好。应用模块定义了哪些服务是我们应用的一部分:儿童=【
你好。遥测技术,
你好。回购,
凤凰城。PubSub,名字:你好。PubSub},
你好。端点
]如果这是你第一次使用凤凰城,你现在不需要担心细节。现在,可以说我们的应用程序启动了一个数据库存储库、一个用于跨进程和节点共享消息的PubSub系统以及应用程序端点,该端点有效地服务于HTTP请求。这些服务按照定义的顺序启动,每当关闭应用程序时,它们都会以相反的顺序停止。您可以在Elixir的官方应用文档中了解更多有关应用程序的信息。lib/hello/mailer.ex文件保存hello。邮件模块,定义了发送电子邮件的主要界面:
你好。梅勒道
使用Swoosh。Mailer,otp_app::你好
结束在同一个lib/hello目录中,我们将找到一个lib/hello/repo.ex .它定义了一个hello。回购模块是我们与数据库的主要接口。如果您使用Postgres(默认数据库),您将看到如下内容:你好。回购do
使用Ecto。回购,
otp_app::你好,
适配器:Ecto。适配器。Postgres
结束暂时就这样了。当您在项目中工作时,我们将向该目录添加文件和模块。
lib/hello_web目录lib/hello_web目录保存了我们的应用程序中与web相关的部分。展开后看起来像这样:lib/你好网
├──控制器
│ ├── page_controller.ex
│ ├──页面_html.ex
│ ├──错误_html.ex
│ ├──错误_json.ex
│ └──网页_html
│ └──主页。home.html.heex
├──组件
│ ├──核心组件
│ ├──布局图。ex
│ └──版面设计
│ ├── app.html.heex
│ └──根。root.html.heex
├──端点。ex
├──新闻网
├──路由器。ex
└──遥测技术公司当前在控制器和组件目录中的所有文件都是为了创建“欢迎来到Phoenix!”我们在“启动和运行”指南中看到的页面。通过查看控制器和组件目录,我们可以看到Phoenix提供了开箱即用的处理布局、HTML和错误页面的功能。除了提到的目录之外,lib/hello_web的根目录下还有四个文件。lib/hello_web/endpoint.ex是HTTP请求的入口点。一旦浏览器访问http://localhost:4000,端点就开始处理数据,最终到达在lib/hello_web/router.ex中定义的路由器。路由器定义了向“控制器”发送请求的规则,控制器调用视图模块将HTML页面呈现回客户端。我们将在其他指南中详细探讨这些层,从接下来的“请求生命周期”指南开始。通过遥测技术,Phoenix能够收集指标并发送应用程序的监控事件。lib/hello_web/telemetry.ex文件定义了负责管理遥测过程的主管。您可以在遥测指南中找到关于此主题的更多信息。最后,还有一个lib/hello_web/gettext.ex文件,它通过gettext提供国际化。如果您不担心国际化,您可以安全地跳过该文件及其内容。
资产目录
资产目录包含与前端资产相关的源文件,如JavaScript和CSS。从Phoenix v1.6开始,我们使用esbuild来编译资产,资产由esbuild Elixir包管理。与esbuild的集成被嵌入到您的应用程序中。相关的配置可以在config/config.exs文件中找到。您的其他静态资产放在priv/static文件夹中,其中为生成的资产保存了priv/static/assets。priv/static中的所有内容都由该插件提供服务。在lib/hello_web/endpoint.ex中配置的静态插件。当在dev模式下运行时(MIX_ENV=dev),Phoenix会观察您在assets目录中所做的任何更改,然后在您工作时在浏览器中更新您的前端应用程序
请注意,当您第一次使用mix phx.new创建Phoenix应用程序时,可以指定影响资产目录的存在和布局的选项。事实上,Phoenix apps可以自带前端工具,或者根本没有前端(例如,如果您正在编写API,这很方便)。更多信息可以运行mix help phx.new或者查看Mix tasks中的文档。如果默认的esbuild集成不能满足您的需求,例如,因为您想要使用另一个构建工具,您可以切换到一个定制的资产构建。至于CSS,Phoenix附带了Tailwind CSS框架,为项目提供了一个基础设置。你可以选择任何一个CSS框架。其他参考资料可在《资产管理指南》中找到。

这篇关于学习elixir(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003836

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个