要注意的是
每次一來一回後處理這次連線的 process 就結束了,下一次就是全新的連線,
所以我在 /posts 看完所有的文章標題,想要點進去其中一篇文章,我就要再發一次全新的連線來要求 /posts/2 ,
Phoenix 就依照 id 為 2 的 post 來顯示單個文章畫面。
兩次要求是分開的事件,也就是兩次都是重新傳整個網頁,兩個頁面重複的東西像是選單也是要重新傳一次,
這樣的好處是架構單純,也是以前流行的做法。
在我們開始做 LiveView 之前最好先理解大概的原理,比較知道在幹嘛
簡單來說,開啟 LiveView 頁面時,瀏覽器與 Phoenix 會建立一個持續的 websocket 連結,瀏覽器頁面會自動依照伺服器上面的狀態來改變顯示的樣子
依照順序他做的事情是:
要注意的是
因為 Elixir 語言的特性,可以有極多的 process 同時進行,所以有辦法做到隨時都有一個 process 來為每一個客戶持續的連線,
並統一在 process 裡面管理該客戶端的狀態。
好處是什麼
跟傳統做法相比,不用寫 javascript 來另外操作瀏覽器端的狀態,也可以很簡單的加上豐富的互動。
跟前端框架相比,因為所有的狀態都在伺服器端統一管理,所以不用多一層 api 跟後端溝通,可以直接拿要拿的項目如 context 的內容。