iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
Software Development

通勤看手機就可讀懂的 Elixir 語言入門教學系列 第 25

Elixir 的 Application (應用程式)

  • 分享至 

  • xImage
  •  

在 Elixir 裡面沒有像有些語言一樣有特定的 main 之類的程式執行點
早些有提到,一次執行的大部分都使用 exs 的 script 執行。
但 Elixir 真正厲害的是執行像是網頁伺服器這種需要長時間啟動的應用程式。

Mix 啟動專案

讓我們建立一個新的 Mix 專案

mix new my_site

在這個專案資料夾裡的 mix.exs
我們可以調整 application 函式

  def application do
    [
      mod: {MySite, []},
      extra_applications: [:logger]
    ]
  end

在這個函式的 keyword list 裡,我們可以放入要讓這個 mix 專案啟動時要執行的 application
預設有負責 log 資訊的 logger,
另外還有多種方式可以告訴 mix 這個專案啟動的時候底下要啟動並維護的 application 有哪些
如同註解寫的我們可以透過 mix help compile.app 來查看這邊可以接受的 application 格式

不過我們現在先使用 module 的方式定義 application
在 application keyword list 裡面加一個 mod: {MySite, []},

我們接下來要把 MySite 模組 (lib/my_site.ex) 變成這裡需要的 application

Application (應用程式)

defmodule MySite do
  use Application
end

Elixir 有內建一個 Application 模組讓我們 use
這個 use 裡面的 __use__ 函式同時定義了 behaviour
這個 behaviour 告訴我們要在這個的模組定義叫做 start/2 的函式

defmodule MySite do
  use Application

  def start(_type, _args) do
    children = []
    Supervisor.start_link(children, [strategy: :one_for_one])
  end
end

start callback 函式說明裡,寫著他需要回傳 {:ok, pid} 這種格式
在這邊他想要得到的是 Elixir process 監督樹上的 process id
我們先給他一個底下沒有 children 的監督者滿足條件,後面會詳細說明這一塊

執行

使用 mix run 來執行我們的專案

mix run --no-halt

這樣我們的伺服器就跑起來了,
不過現在什麼都不能做,在接下來裝上網頁伺服器之前
可以使用 ctrl + c 兩次將他關閉


上一篇
Meta-programming 4 - 自動設置函數
下一篇
Plug
系列文
通勤看手機就可讀懂的 Elixir 語言入門教學26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言