突然發現elixir很有趣,所以想記錄以下學習內容
elixir simple.exs
以下是一些官方文檔機器翻譯(不具有可讀性)
- 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框架。其他參考資料可在《資產管理指南》中找到。