關於後端只傳 JSON,接著讓前端自己渲染的那些事

專案網站

要維護一個網路框架,常常要和各種 helper 打交道。這些抽象的 helper 語法很好用,但也有問題:一來前端不一定懂、二來後端也可能對前端有誤會。

這些語法和前端掛在一起、會變得極度混亂。接著維護上也會出現問題:到了後來,儘管大家覺得某個網頁的問題很多,但因為後端語法和前端混在一起,所以沒有人敢動:誰動誰就死、誰就來承擔一切。

而當今的 JavaScript 相當發達──哪怕是 jQuery 也好,它也能操縱各種網頁元件。那麼,可不可以後端只給 JSON 傳資料,然後前端用這些資料,產生各種樣式?

只用一個 JSON 就生出有資料的網頁,把前端和後端徹底分開。多麼棒的想法啊。

於是,我開始寫了。同樣還是用熟悉的 rails 與 Kube。另外,JavaScript 使用 jQuery 去請求 JSON、架構渲染使用 Vue──我其實很希望連請求也都用 Vue,不過看來過於複雜,還是在裡面嵌入 jQuery 的 AJAX API 比較簡單。

可是怎麼嵌入?我一開始搜尋,以為是用 ready 語法產生。但是無論如何,都無法得到路徑正確的 JSON 檔案。直到後來,才發現在 Vue2,ready 語法已經被棄用了,必須改用 mounted 語法。改掉之後,成功看到了資料有進來。

接著,我拔掉了後端語法。相同效果下,網頁變得簡潔許多。

只是我突然想到,就算是只用 JSON 傳資料,前後端從此就能切分清楚了嗎──要是隨著行事邏輯的複雜,JSON 的資料多了以後,做各種判斷、下各種樣式,會比較容易嗎……?而且,要不要考慮停了 JavaScript 的用戶,也是個問題。

請求發多少、速度多快,可能也是要考慮的要點。