【Go + htmx】隨手玩玩

揚
發佈於Err500
2023/12/09閱讀時間約 2 分鐘

htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。

專案架構

專案架構

專案架構


  • go主程式為後端server
  • html檔案為前端頁面




畫面

呈現上只使用預設的模板修改一下文字,加入一個按鈕作為請求的觸發

raw-image


程式

後段部分:

實作一個server監聽本機的8080 port,依據請求的類型(GET/POST)決定回應的段落內容

後端程式

後端程式

前端部分:

在head區塊引入CDN,並且在button 上加入htmx相對應功能的attribute

<script src="https://unpkg.com/[email protected]"></script>

<button hx-post="http://localhost:8080" hx-swap="outerHTML">Click Me</button>
前端發送post request

前端發送post request




CORS

啟動後,點擊畫面按鈕發現沒反應
用開發者工具檢視一下問題(F12),是被瀏覽器的CORS擋下來了

raw-image

preflight request有完成,只不過傳送的header不在後端允許的項目中

raw-image

回到後端多設置兩條header

	w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "hx-current-url,hx-request")
header處理

header處理




結果


成功發送post request

成功發送post request

改為發送GET

<button hx-get="http://localhost:8080" hx-swap="outerHTML">Click Me</button>
前端發送get request

前端發送get request

取的get結果

取的get結果


htmx強大的地方,在於一些常用的功能已透過attribute進行處理,不用額外寫javascript去控制邏輯。官方文件上還有很多機制可以發掘,等有時間再來鑽研了。


10會員
54內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
發表第一個留言支持創作者!