如何在 IntelliJ 上运行 Elixir 和 Phoenix 程序?

简介: 如何在 IntelliJ 上运行 Elixir 和 Phoenix 程序?

Elixir 是一门非常强大的 函数式 编程语言,Elixir 社区构建了一个插件,该插件可以在 Jetbrains 的 IDE 上运行 Elixir 程序且是用于所有的 Jetbrains 产品。

在开始之前确定你已经安装了 Elixir,安装 Elixir 同时会安装 Erlang,因为 Elixir 是运行在 Erlang 虚拟机上(BEAM)。

如果你的开发平台是 MAC,可以通过 brew install 安装最新版的 Elixir,并且通过 elixir --version 命令来查看安装的 Elixir 的版本号。

image.png

由于 Elixir 运行在 BEAM 上,所以我们需要在 IntelliJ 上能够查看到 Elixir 和 Erlang SDK,我们需要通过 IntelliJ IDEA -> Preferences -> Plugins 安装两个插件,第一个是 Erlang plugin;第二个是 Elixir plugin。这两个查看都需要在 IntelliJ 上配置相应的 SDK。

打开 IntelliJ 并点击 New Project,选择创建 Elixir 项目,在 IntelliJ Ultimate 版本中还可以选择数据库。

image.png

之后会选择项目的 SDK,安装的 Elixir Plugin 可以检测到你安装的 Elixir SDK,并且可以将这个 SDK 设置为默认的 SDK。

image.png

然后你就可以输入项目的一些详细信息,最后点击 Finish 即可。

image.png

项目创建完成之后,你可以看到在该项目中包含了一个 lib 文件夹,用于保存你的文件(Elixir code) 和一个 .iml 结尾的 IntelliJ 配置文件。

image.png

我们继续在 lib 文件夹下添加一个新的文件,并使它在终端中打印信息

image.png

image.png

现在我们需要对项目做一些配置,在 IDE 窗口的最上方或者 Run -> Edit -> Configurations 进行配置。选择 Elixir 配置并添加文件的路径以及给这个 Configuration 命名。

image.png

image.png

点击 IntelliJ 窗口上方的绿色按钮即可运行 hello.ex 文件

image.png

如何运行 Phoenix

Elixir 插件同时也支持运行 Phoenix Web 框架,你需要先安装 Phoenix 并且通过命令行创建一个新的项目并构建相关的项目依赖。

在安装了 Elixir 和 Erlang 插件的前提下打开使用 IntelliJ 打开 Phoenix Web 项目,项目会自动设置 Elixir 和 Erlang 的 SDK,如果没有你可以通过 File -> Project Structure -> SDKs 设置。

与 Elixir 项目一样,我们需要先进行运行配置,但是这一次我们要选择 Elixir Mix 因为我们要运行 mix 命令,在配置 mix arguments fields 中输入 phx.server

image.png

启动项目

image.png

浏览器访问 http://localhost:4000

image.png

错误解决

Elixir 和 Erlang 插件在安装之后可能出现无法正常运行的情况,可以通过以下方式解决:

如果出现一些无法找到文件或者模块的错误,可以通过 File -> Invalidate Caches/Restart 清除缓存并重启 IntelliJ。

如果出现无法找到 Erlang SDK 的错误,可以去通过 File -> Project Structure -> SDKs -> Elixir 来确认 Erlang Plugin 是否识别到 Erlang SDK 的安装。

External Helps

Elixir 和 Erlang 插件

image.png

创建 Phoenix 项目使用命令 mix phx.new projectName

image.png

mix deps.get 命令可以安装相关依赖。

image.png

自定义 Phoenix 页面

lib 文件夹下保存着 Elixir 代码,config 文件夹下保存着各种配置,assets 文件夹下存放的是静态文件。Phoenix 框架也是 MVC 架构。

首先在 lib/phx_quickstart_web/router.ex 文件中增加一个自定义的路由 /zulu,该路由映射到 ZuluController 中的 zulu 函数

image.png

接着在 lib/phx_quickstart_web/controllers 增加一个 ZuluController,并定义 zulu 函数,该函数渲染到 zulu.html 页面。

defmodule PhxQuickstartWeb.ZuluController do
  use PhxQuickstartWeb, :controller
  def zulu(conn, _params) do
    render(conn, "zulu.html")
  end
end
复制代码

然后在 lib/phx_quickstart_web/views 中增加一个 zulu_views.ex,代码如下:

defmodule PhxQuickstartWeb.ZuluView do
  use PhxQuickstartWeb, :view
end
复制代码

最后在 lib/phx_quickstart_web/templates 中增加 zulu/zulu.html.heex,代码如下:

<section class="phx-hero">
    <h2>Hello World, from Phoenix!</h2>
</section>
复制代码

浏览器访问 http://localhost:4000/zulu

image.png

大功告成


相关文章
|
消息中间件 监控 数据挖掘
NineData:从Kafka到ClickHouse的数据同步解决方案
NineData 提供了强大的数据转换和映射功能,以解决 Kafka 和 ClickHouse 之间的格式和结构差异,确保数据在同步过程中的一致性和准确性。
826 2
NineData:从Kafka到ClickHouse的数据同步解决方案
|
数据安全/隐私保护
【VBScript】vbs 错误未结束的错误字符串常量
【VBScript】vbs 错误未结束的错误字符串常量
376 0
|
3月前
|
存储 机器学习/深度学习 人工智能
构建AI智能体:三、Prompt提示词工程:几句话让AI秒懂你心
本文深入浅出地讲解Prompt原理及其与大模型的关系,系统介绍Prompt的核心要素、编写原则与应用场景,帮助用户通过精准指令提升AI交互效率,释放大模型潜能。
681 5
|
文件存储 Docker 智能硬件
DIY nas之casaOS云系统&Home Assistant
CasaOS是一个基于Docker生态系统的开源家庭云系统,专为家庭场景而设计,它可以让您创建自己的云服务器
2809 1
|
6月前
|
机器学习/深度学习 人工智能 编解码
AI 只用 60 秒就能生成 Logo,用 AI 生成 Logo 有什么优势和特点?
AI Logo生成工具测评:免费方案能否满足品牌需求? AI Logo生成工具凭借高效低价的特点,为初创企业和个人提供了便捷的选择。本文对比了7款主流免费AI Logo工具(如LogomasterAI、燕雀光年等),发现这些工具平均1分钟即可生成Logo,提供多种行业模板和编辑功能,部分甚至支持矢量格式输出。但在专业性方面,AI生成的Logo虽具备基础设计感,却可能缺乏独特性。值得注意的是,各工具版权政策差异较大,用户需仔细确认商用授权条款。建议预算有限的用户可先用AI生成基础方案,再结合专业建议进行优化,
295 0
|
算法 安全 关系型数据库
后端技术在现代软件开发中的重要性与应用
本文将深入探讨后端技术在现代软件开发中的关键作用及其广泛应用。我们将从后端开发的基本概念入手,逐步解析其在构建高性能、可扩展和安全的软件系统中的核心地位。通过具体案例,展示不同后端技术如何满足各种复杂业务需求,从而帮助企业实现数字化转型。最后,文章还将探讨未来后端技术的发展趋势,为开发者提供前瞻性的指导。
|
安全 API 网络安全
OpenStack的 网络服务(Neutron)
【8月更文挑战第23天】
1038 10
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek 实践应用解析:合力亿捷智能客服迈向 “真智能” 时代
DeepSeek作为人工智能领域的创新翘楚,凭借领先的技术实力,在智能客服领域掀起变革。通过全渠道智能辅助、精准对话管理、多语言交互、智能工单处理、个性化推荐、情绪分析及反馈监控等功能,大幅提升客户服务效率和质量,助力企业实现卓越升级,推动智能化服务发展。
422 1
|
缓存 网络协议
Clash连接成功却无法访问
Clash连接成功却无法访问
6606 1
|
负载均衡 网络安全 API
OpenStack核心组件Neutron
【8月更文挑战第4天】
804 9