在 Elixir 中制作桌面应用程序
Making desktop apps in Elixir
背景
在我寻求使用 Elixir 为 Windows 制作桌面应用程序时(我暂时放弃了制作多桌面应用程序的想法)我正在尝试创建一个 HelloWorld 桌面应用程序。
这个应用程序基本上就是你从 运行ning mix phx.new 你好。
我正在使用 Phoenix 的最新版本,所以我不必处理 SASS 或任何类似的东西,老实说这是一种祝福,因为这意味着我没有更多的 node-gyp 问题。
使其桌面友好
然而,正如你们中的一些人可能已经意识到的那样,仅创建 Phoenix 项目并不能使其成为桌面应用程序。
这是桌面项目的用武之地:
这是一个依赖项,可以让您的应用程序像桌面一样。
由于我过去有 运行 个示例应用程序:
我想我会试着把它拆开,并尝试启动我能做的最简单、最笨的 HelloWorld 应用程序。
基本上,当我 运行 mix iex -S
我想要它而不是在我的浏览器中打开 window 来打开桌面应用程序。
问题
我已经添加了所有依赖项,并且我的项目结构与示例应用程序的结构有些相似:
mix.exs
defmodule Hello.MixProject do
use Mix.Project
def project do
[
app: :hello,
version: "0.1.0",
elixir: "~> 1.12",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps()
]
end
def application do
[
mod: {Hello.Application, []},
extra_applications: [:logger, :runtime_tools, :inets, :observer, :wx]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:phoenix, "~> 1.6.2"},
{:phoenix_html, "~> 3.0"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_view, "~> 0.16.0"},
{:floki, ">= 0.30.0", only: :test},
{:phoenix_live_dashboard, "~> 0.5"},
{:esbuild, "~> 0.2", runtime: Mix.env() == :dev},
{:swoosh, "~> 1.3"},
{:telemetry_metrics, "~> 0.6"},
{:telemetry_poller, "~> 1.0"},
{:gettext, "~> 0.18"},
{:jason, "~> 1.2"},
{:plug_cowboy, "~> 2.5"},
{:desktop, github: "elixir-desktop/desktop", tag: "v1.3.1"},
{:credo, "~> 1.5", only: [:dev, :test], runtime: false}
]
end
defp aliases do
[
setup: ["deps.get"],
"assets.deploy": ["esbuild default --minify", "phx.digest"]
]
end
end
然而,我所做的一切都不起作用。控制台中没有错误,但桌面应用程序无法启动。
我愿意抛开一切,我只想要一种在桌面上打开它的方法window。
我认为可能存在配置问题,但我不能确定,因为示例应用程序是使用使用 SASS.
的旧版 Phoenix 完成的
问题
谁能帮我弄清楚打开桌面的 MNE 是什么 window?
我在这里开源了项目:
我下载了你的代码,它似乎工作得很好。你需要 运行 它与 iex -S mix phx.server
或 mix phx.server
思想相反。
几件事:
iex
不是混合任务它是交互式长生不老药 shell 你可以 运行 你的程序通过调用 iex
与 -S
脚本标签后跟混合命令。
您的应用程序与大多数 phoenix 应用程序一样,在您调用 mix phx.server
时启动端点,否则应用程序将在不启动允许其响应网络请求的端点的情况下启动。 Elixir-Desktop 与端点一起启动。
背景
在我寻求使用 Elixir 为 Windows 制作桌面应用程序时(我暂时放弃了制作多桌面应用程序的想法)我正在尝试创建一个 HelloWorld 桌面应用程序。
这个应用程序基本上就是你从 运行ning mix phx.new 你好。 我正在使用 Phoenix 的最新版本,所以我不必处理 SASS 或任何类似的东西,老实说这是一种祝福,因为这意味着我没有更多的 node-gyp 问题。 使其桌面友好
然而,正如你们中的一些人可能已经意识到的那样,仅创建 Phoenix 项目并不能使其成为桌面应用程序。 这是桌面项目的用武之地:
这是一个依赖项,可以让您的应用程序像桌面一样。 由于我过去有 运行 个示例应用程序:
我想我会试着把它拆开,并尝试启动我能做的最简单、最笨的 HelloWorld 应用程序。
基本上,当我 运行 mix iex -S
我想要它而不是在我的浏览器中打开 window 来打开桌面应用程序。
问题
我已经添加了所有依赖项,并且我的项目结构与示例应用程序的结构有些相似:
mix.exs
defmodule Hello.MixProject do
use Mix.Project
def project do
[
app: :hello,
version: "0.1.0",
elixir: "~> 1.12",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps()
]
end
def application do
[
mod: {Hello.Application, []},
extra_applications: [:logger, :runtime_tools, :inets, :observer, :wx]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:phoenix, "~> 1.6.2"},
{:phoenix_html, "~> 3.0"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_view, "~> 0.16.0"},
{:floki, ">= 0.30.0", only: :test},
{:phoenix_live_dashboard, "~> 0.5"},
{:esbuild, "~> 0.2", runtime: Mix.env() == :dev},
{:swoosh, "~> 1.3"},
{:telemetry_metrics, "~> 0.6"},
{:telemetry_poller, "~> 1.0"},
{:gettext, "~> 0.18"},
{:jason, "~> 1.2"},
{:plug_cowboy, "~> 2.5"},
{:desktop, github: "elixir-desktop/desktop", tag: "v1.3.1"},
{:credo, "~> 1.5", only: [:dev, :test], runtime: false}
]
end
defp aliases do
[
setup: ["deps.get"],
"assets.deploy": ["esbuild default --minify", "phx.digest"]
]
end
end
然而,我所做的一切都不起作用。控制台中没有错误,但桌面应用程序无法启动。 我愿意抛开一切,我只想要一种在桌面上打开它的方法window。
我认为可能存在配置问题,但我不能确定,因为示例应用程序是使用使用 SASS.
的旧版 Phoenix 完成的问题
谁能帮我弄清楚打开桌面的 MNE 是什么 window?
我在这里开源了项目:
我下载了你的代码,它似乎工作得很好。你需要 运行 它与 iex -S mix phx.server
或 mix phx.server
思想相反。
几件事:
iex
不是混合任务它是交互式长生不老药 shell 你可以 运行 你的程序通过调用iex
与-S
脚本标签后跟混合命令。您的应用程序与大多数 phoenix 应用程序一样,在您调用
mix phx.server
时启动端点,否则应用程序将在不启动允许其响应网络请求的端点的情况下启动。 Elixir-Desktop 与端点一起启动。