關於
JR Toolkits 是一組單一用途的小工具,每個工具只做一件事,而且完全在你的瀏覽器裡執行。 這一頁說明這個站為什麼這樣設計、技術上怎麼做到,以及靠什麼維持營運。
為什麼不做後端
多數線上工具會把你的輸入送到伺服器處理。那樣比較好寫,但它要求你先相信這個站。 正式環境的 schema、還沒公開的資料,常常是不該離開公司網路的東西, 而「我們不會儲存你的資料」這種承諾,你沒有辦法驗證。
把運算全部放在用戶端,「會不會外流」就從信任問題變成可以自己檢查的問題。 打開開發者工具的網路分頁,看有沒有請求把你的資料送出去,答案你自己就能確認, 不需要相信我寫在這裡的任何一句話。
這條路的代價是實在的,主要有三個:
- 跨裝置同步做不到,因為沒有帳號,也沒有伺服器可以存東西。
- 處理規模受限於瀏覽器的記憶體與單執行緒效能,極大的輸入會明顯變慢。
- 需要伺服器才能做的功能一律不做,只能換一個在瀏覽器裡做得到的做法,或是放棄。
技術上怎麼實現
- 靜態站以 Astro 產生,每一頁在建置期就輸出完整 HTML,不執行 JavaScript 也讀得到內容。
- 互動工具以 React island 載入,因此只有工具頁會下載 React,首頁與政策頁的 JavaScript 是零。
- 存檔寫進瀏覽器的
localStorage而不是資料庫,細節見隱私權政策。 - 部署在 Cloudflare Pages,整個站就是一包靜態檔案,從 CDN 送到你面前之後沒有任何回程。
- 原始碼裡沒有任何後端程式,也沒有安裝流量分析服務。
靠什麼維持營運
- Google AdSense 的廣告是這個站唯一的收入來源。
- 廣告只出現在頁面邊界,不會蓋在工具的操作區上。
- 廣告如何使用 Cookie、以及如何停用個人化廣告,見隱私權政策。