0

0

VSCode如何通过扩展支持Elixir开发 VSCode配置Elixir+Phoenix项目技巧

爱谁谁

爱谁谁

发布时间:2025-08-07 11:07:01

|

346人浏览过

|

来源于php中文网

原创

安装elixirls扩展:在vscode中打开扩展面板,搜索并安装官方elixirls扩展,安装后重启vscode。2. 确保erlang和elixir环境就绪:使用asdf安装并设置erlang和elixir的全局版本,并运行mix local.hex --force和mix local.rebar --force更新包管理工具。3. 配置phoenix项目:在vscode中打开项目根目录,elixirls会自动启用;通过settings.json配置文件关联,将.eex、.heex、*.leex识别为html以获得语法高亮;启用editor.formatonsave实现保存时自动格式化。4. 调试配置:在项目下的.vscode目录创建launch.json,添加mix phx.server、mix test或iex -s mix等调试任务,支持断点、变量检查、调用堆栈和单步执行。5. 优化开发体验:推荐安装bracket pair colorizer、error lens、gitlens、path intellisense、dotenv和live share等扩展;使用项目级settings.json和tasks.json定义常用mix命令;创建代码片段提升编码效率;结合mix test.watch实践tdd;坚持使用mix format保持代码风格统一。完成这些步骤后,vscode将成为功能完备且高效的elixir与phoenix开发环境。

VSCode如何通过扩展支持Elixir开发 VSCode配置Elixir+Phoenix项目技巧

VSCode要通过扩展支持Elixir开发,并有效配置Elixir和Phoenix项目,核心在于安装并正确配置ElixirLS扩展。这个官方推荐的语言服务器能为Elixir代码提供语法高亮、自动补全、定义跳转、错误检查等关键功能,让VSCode真正成为Elixir开发的利器。

解决方案

要让VSCode成为你Elixir和Phoenix开发的得力助手,第一步也是最关键的一步,就是安装ElixirLS扩展。这东西简直是Elixir开发者在VSCode里的瑞士军刀。

  1. 安装ElixirLS扩展:

    • 打开VSCode。
    • 点击左侧边栏的“扩展”图标(或按
      Ctrl+Shift+X
      )。
    • 在搜索框中输入
      ElixirLS
    • 找到由“ElixirLS”官方发布的扩展,点击“安装”。
    • 安装完成后,通常会提示你重启VSCode,照做就是了。
  2. 确保Elixir和Erlang环境就绪:

    • ElixirLS依赖于你的系统上已经正确安装了Erlang/OTP和Elixir。如果你还没装,推荐使用
      asdf
      版本管理器,它能让你轻松管理Erlang和Elixir的多个版本,避免版本冲突带来的麻烦。
    • 安装
      asdf
      后,运行
      asdf plugin add erlang
      asdf plugin add elixir
    • 然后通过
      asdf install erlang 
      asdf install elixir 
      安装你需要的版本,并用
      asdf global elixir 
      asdf global erlang 
      设置全局版本。
    • 别忘了运行
      mix local.hex --force
      mix local.rebar --force
      ,确保Hex和Rebar这两个Elixir的包管理器和构建工具是最新的。ElixirLS在启动时会用到它们来管理依赖。
  3. 为Phoenix项目配置VSCode:

    • 打开项目文件夹: 在VSCode中打开你的Phoenix项目根目录。ElixirLS会自动检测到这是一个Elixir项目并开始工作。
    • 集成终端: Phoenix项目通常需要运行
      mix phx.server
      来启动服务器。在VSCode的集成终端(
      Ctrl+`` 或
      View > Terminal`)里运行这个命令非常方便,你可以同时看到日志输出和代码。
    • 文件关联: Phoenix项目里会有
      .eex
      ,
      .heex
      ,
      .leex
      这样的模板文件。默认情况下,VSCode可能不认识它们是HTML。你可以在
      settings.json
      中添加如下配置,让VSCode把它们当HTML来处理,这样就能有语法高亮和Emmet支持了:
      "files.associations": {
          "*.eex": "html",
          "*.heex": "html",
          "*.leex": "html"
      }
    • 格式化: Elixir自带了
      mix format
      工具。ElixirLS通常会与它集成。你可以在VSCode设置中开启
      editor.formatOnSave
      ,这样每次保存文件时,代码就会自动格式化,保持代码风格一致,简直是强迫症患者的福音。

搞定这些基础设置,你就能在VSCode里享受到丝滑的Elixir和Phoenix开发体验了。

ElixirLS扩展的核心功能与配置建议

ElixirLS不仅仅是一个简单的语言服务器,它背后的设计理念就是为了让Elixir开发变得更加顺畅。我个人觉得,它最让人离不开的几个功能,就是代码补全、定义跳转和实时诊断。

代码补全(Code Completion)是它最基础也最常用的功能,你敲几个字母,它就能把可能的函数、模块名甚至变量名都给你列出来,大大减少了拼写错误和记忆负担。对于Elixir这种模块化、函数式编程语言来说,能够快速找到正确的函数签名和模块,效率提升不是一点半点。

定义跳转(Go to Definition)和查找引用(Find References)功能,在阅读大型代码库或者维护老项目时,简直是救命稻草。想知道一个函数在哪里定义的?

Ctrl + Click
一下就跳过去了。想看看一个函数被哪些地方调用了?右键选择“查找所有引用”,一目了然。这比你手动在项目里 grep 效率高太多了,而且结果更精准。

实时诊断(Live Diagnostics)功能,会在你编写代码时实时检查语法错误、未定义变量、甚至一些潜在的逻辑问题(比如,你调用了一个不存在的函数)。这能让你在编译之前就发现问题,省去了很多编译-运行-报错-修改的循环,对我这种急性子来说,简直是福音。

配置建议:

ElixirLS的一些配置项藏在VSCode的

settings.json
里,合理调整它们能进一步优化你的开发体验。

  • DialyzerEnabled:

    elixirLS.dialyzerEnabled
    这个选项默认是
    true
    。Dialyzer是Elixir的静态分析工具,它能帮你找出代码中的类型不匹配、死代码等问题。它的检查非常严格,能提升代码质量。但是,它在大型项目上运行可能会比较慢,尤其是在你每次保存文件时都触发的话。我个人建议,如果你项目很大,或者机器配置一般,可以考虑将其设置为
    false
    ,然后在需要的时候手动运行
    mix dialyzer
    。这东西真是个双刃剑,检查得细,但也可能拖慢IDE响应。

  • SuggestSpecs:

    elixirLS.suggestSpecs
    设为
    true
    可以让ElixirLS在你编写函数时,尝试根据函数体推断并建议
    @spec
    声明。这对于编写自文档化和类型安全的Elixir代码非常有帮助。虽然Elixir是动态类型语言,但
    @spec
    对于代码理解和Dialyzer检查来说,价值巨大。

  • FetchDeps:

    elixirLS.fetchDeps
    默认是
    true
    ,这意味着ElixirLS会尝试自动下载和编译项目的依赖。在某些网络环境不佳或者依赖特别多的情况下,这可能会导致ElixirLS启动缓慢。如果遇到这种情况,可以尝试将其设为
    false
    ,然后手动运行
    mix deps.get
    mix compile

    MiniMax Agent
    MiniMax Agent

    MiniMax平台推出的Agent智能体助手

    下载
  • FormatOnSave: 再次强调

    editor.formatOnSave
    。搭配
    mix format
    ,每次保存文件代码就自动排版,省去了手动格式化的麻烦,也避免了团队成员之间代码风格不一致的问题。这对于团队协作来说,简直是强制性的好习惯。

  • 文件关联: 之前提到的

    files.associations
    ,确保
    .eex
    ,
    .heex
    ,
    .leex
    被识别为
    html
    ,这样你在编写Phoenix模板时就能获得完整的HTML语法高亮和智能提示。

这些配置项,你可以根据自己的开发习惯和项目需求进行调整。有时候,一个小小的配置改变,就能带来巨大的效率提升。

在VSCode中调试Elixir和Phoenix应用的实战技巧

调试是开发过程中不可避免的一部分,尤其是在处理复杂逻辑或者排查难以复现的Bug时。VSCode通过ElixirLS提供了相当不错的调试支持,虽然它不像一些传统IDE那样功能强大到令人发指,但对于日常开发来说,绝对够用了。

要开始调试,你需要在项目的

.vscode
目录下创建一个
launch.json
文件。这个文件定义了VSCode如何启动你的应用程序进行调试。

常见的调试配置:

  1. 调试Phoenix服务器: 这是最常用的场景,直接启动你的Phoenix应用并进行调试。

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "mix_task",
                "name": "mix phx.server",
                "request": "launch",
                "task": "phx.server",
                "projectDir": "${workspaceFolder}"
            }
        ]
    }

    配置好后,在“运行和调试”视图(

    Ctrl+Shift+D
    )选择“mix phx.server”并启动,你就可以在代码里设置断点,当程序执行到断点时,它就会暂停,你就能检查变量、单步执行了。

  2. 调试测试: 调试失败的测试用例是定位问题的好方法。

    {
        "type": "mix_task",
        "name": "mix test",
        "request": "launch",
        "task": "test",
        "projectDir": "${workspaceFolder}"
    }

    你也可以针对特定文件或特定测试用例进行调试,比如在

    task
    字段后面加上文件路径或
    test --only ...

  3. 调试IEx会话: 有时候你可能想在IEx交互式会话中调试一些代码片段。

    {
        "type": "mix_task",
        "name": "iex -S mix",
        "request": "launch",
        "task": "iex",
        "args": ["-S", "mix"],
        "projectDir": "${workspaceFolder}"
    }

调试实战技巧:

  • 断点设置: 在代码行号的左边点击即可设置或取消断点。断点可以是普通的,也可以是条件断点(右键断点选择“编辑断点”,输入条件表达式,只有条件为真时才会暂停),或者日志断点(不暂停,只输出信息到调试控制台)。条件断点在循环中尤其有用。
  • 变量检查: 当程序暂停在断点时,调试面板的“变量”区域会显示当前作用域内的所有变量及其值。你可以展开查看复杂数据结构,比如Map、Struct、List等。
  • 调用堆栈: “调用堆栈”区域会显示当前函数的调用链。你可以点击堆栈中的每一项,跳转到对应的代码位置,理解程序执行的路径。
  • 单步执行: “继续”、“单步跳过”、“单步进入”、“单步跳出”这些按钮能让你控制程序的执行流程。
    单步进入
    (Step Into)会进入函数内部,
    单步跳过
    (Step Over)则会跳过函数调用,直接到下一行。
  • Ecto查询调试: 在Ecto查询中,你可能想看看生成的SQL或者查询结果。除了使用
    IO.inspect
    ,你也可以在查询的某个点设置断点,然后检查
    query
    变量或者数据库操作返回的结果。
  • LiveView调试: LiveView的调试通常结合了后端(ElixirLS调试)和前端(浏览器开发者工具)。你可以在服务器端的LiveView模块中设置断点,查看消息处理流程和状态变化。同时,利用浏览器开发者工具检查WebSocket通信、DOM更新和前端JavaScript错误。Elixir 1.14+ 引入的
    dbg/1
    宏,在快速查看表达式值时也特别方便,它会把表达式的值和位置打印出来,而不需要你手动添加
    IO.inspect

说实话,刚开始用VSCode调试Elixir可能有点不习惯,特别是如果你是从像IntelliJ这样的全功能IDE转过来的话。但一旦你掌握了

launch.json
的配置和基本的调试操作,你会发现它在日常开发中非常高效。

提升Elixir开发体验的其他VSCode扩展与工作流优化

虽然ElixirLS是核心,但VSCode的强大之处在于它的可扩展性。除了ElixirLS,还有一些辅助性的扩展和工作流习惯,能让你的Elixir和Phoenix开发体验更上一层楼。

推荐的VSCode辅助扩展:

  1. Bracket Pair Colorizer (或VSCode内置的括号对高亮): 现在的VSCode版本已经内置了括号对高亮功能,但如果你用的是老版本或者觉得内置的不够好,这个扩展能用不同颜色区分匹配的括号,在Elixir这种嵌套结构较多的语言中,这能极大提高代码可读性,一眼就能看出括号是否匹配,避免很多低级错误。
  2. Error Lens: 这个扩展能把代码中的错误、警告直接显示在对应的代码行旁边,而不是只在“问题”面板里显示。这样你就能更直观地看到问题所在,不用来回切换面板。
  3. GitLens: 如果你使用Git进行版本控制,GitLens简直是神器。它能直接在代码行旁边显示该行的Git提交信息,包括谁在什么时候修改了什么。对于理解代码历史和协作开发,这非常有帮助。
  4. Path Intellisense: 在编写文件路径时提供自动补全功能。在Phoenix项目中,无论是引入静态资源还是引用模块文件,这个都挺方便的。
  5. DotENV: 如果你的项目使用
    .env
    文件来管理环境变量(Phoenix项目通常会用到),这个扩展能为
    .env
    文件提供语法高亮。
  6. Live Share: 对于结对编程或远程协助,Live Share是一个非常强大的工具。它允许你和同事实时共享VSCode会话,共同编辑代码、调试、甚至共享终端。

VSCode工作流优化:

  • 工作区设置 (
    .vscode/settings.json
    ):
    对于特定的Elixir或Phoenix项目,你可能希望有一些项目级的VSCode设置,比如只在这个项目里启用Dialyzer,或者设置特定的文件关联。你可以在项目根目录下创建
    .vscode
    文件夹,并在其中创建
    settings.json
    文件。这样,这些设置就只对当前项目生效,不会影响你的全局VSCode配置。
  • 任务 (
    tasks.json
    ):
    VSCode的任务功能允许你定义和运行自定义脚本。你可以利用它来运行一些常用的
    mix
    命令,比如:
    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Run Phoenix Server",
                "type": "shell",
                "command": "mix phx.server",
                "group": "build",
                "problemMatcher": [],
                "isBackground": true,
                "presentation": {
                    "reveal": "always",
                    "panel": "new"
                }
            },
            {
                "label": "Run Mix Tests",
                "type": "shell",
                "command": "mix test",
                "group": "test",
                "problemMatcher": []
            }
        ]
    }

    定义好后,你可以通过

    Ctrl+Shift+B
    (运行默认构建任务) 或
    Ctrl+Shift+P
    搜索 "Run Task" 来快速执行这些命令,省去了在终端里重复敲命令的麻烦。

  • 代码片段 (Snippets): 如果你经常编写一些重复性的Elixir代码结构(比如
    defmodule
    defp
    test "..." do
    ),可以创建自定义代码片段。在VSCode中,通过
    File > Preferences > User Snippets
    (或
    Code > Preferences > User Snippets
    在macOS上) 选择
    Elixir
    ,然后添加你的片段。这能显著提高编码速度。
  • 多终端管理: 在Phoenix开发中,你可能需要同时运行
    mix phx.server
    mix assets.watch
    (或
    npm run watch
    ),甚至
    iex -S mix
    。VSCode的集成终端支持多个标签页,你可以为每个进程打开一个终端标签页,保持工作区的整洁。
  • Mix Format的坚持: 再次强调
    mix format
    的重要性。保持代码风格的一致性,不仅让代码看起来更舒服,也能减少Code Review时的无谓争论,把精力集中在业务逻辑上。
  • 测试驱动开发 (TDD) 与
    mix test.watch
    如果你实践TDD,
    mix test.watch
    会在你保存文件时自动运行相关测试。结合VSCode的终端,这能形成一个非常流畅的开发循环。

这些辅助工具和工作流优化,可能看起来都是小细节,但它们累积起来,能让你在VSCode中进行Elixir和Phoenix开发时,效率更高,体验更佳。毕竟,一个顺手的工具,能让你的精力更集中在创造性工作上。

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

553

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

374

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

731

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

477

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

394

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

990

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

656

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

551

2023.09.20

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
go语言零基础开发内容管理系统
go语言零基础开发内容管理系统

共34课时 | 2.5万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号