這一遭

2019-09-05 01:17:00
這一遭,足足走了一年多。

空域終於在今年八月時,正式從 PHP 轉進 Node.js 了。
回首這一年多來懶散的改寫工作,說實在的,其實不輕鬆啊。

一年前因為租用的 VPS 不再支援舊版作業系統了,當時覺得更新後整個環境要重新佈署很麻煩,對於 Docker 等工具又是一知半解,提不起興趣好好研究。靈光一閃,Node.js 不用裝進系統,本身就單純是個應用程式,而且在職場上我也早就只純用 Node.js 好久了,何不乾脆改寫,一股作氣從 PHP 換成 Node.js,從此跟系統建置脫勾,快樂的跑 Node.js 就好。就因為這種好傻好天真的想法,開啟了又一段血淚奮鬥。

理想總是美好的。我的計畫是,原本由 PHP 支援的頁面與 API 一隻一隻改成用 Node.js,然後靠擋在前面的 Nginx 指派,已經有 Node.js 版的請求就派給 Node.js;還沒改好的就繼續派給 PHP。所以會有一段時間,VPS 上除了原本佈署好的 PHP,另外還跑了一隻 Node.js。

然後就燒腦了。所有網路上關於 PHP 和 Node.js 比較文章所提到的差異,全部像亂拳一樣,揍得我一頓粗飽。要知道很多時候我們在比較兩者時,其實是基於對 HTTP 的實現,也就是說,我們其實是在比較 Apache+PHP 這套方案,在 Node.js 的生態中如何被完善的替代。

那我們先看看 Node.js 對於 HTTP 的原生支援有哪些。就 HTTP 一包函式庫,沒了。凡舉 header、cookie、傳值、傳檔等基本的處理,通通沒做,有連線的原始物件,資訊都埋在裡面,自己想辦法。另外像是 PHP 很容易實現登入狀態的 session 也沒有,還有最重要的程式掛了怎麼辦。好嘛,Node.js 原生沒有,但 Node.js 強的不就是豐富的社群貢獻嗎,一定有神人大大老早就為我這些雞毛蒜皮準備好完美的方案了。面對這問題,大概會 99% 的程式員跟我一樣,看向那如同勝利女神般的存在,閃閃發光的 Express。

不要!Node.js 自己就有 HTTP 函式庫了,我幹嘛一定要再拉 Express 進來,我的空域不就小小的網站嗎,功能陽春到不行,殺雞焉用牛刀,單靠 Node.js 應該很足夠了,少什麼我自己實作什麼,反正我不需要多齊全的支援。回想那個當下,我就像脖子已套上絞繩的死囚,然後自己欣然的往前縱身一跳。

頁面和 API 的改寫變得像小孩辦家家酒一樣,依樣畫葫蘆,語法從 PHP 翻成 Node.js 就行了。難炸天的是那些 PHP 已經處理好而 Node.js 沒有的功能,每當改寫工作進行一點點,就立刻遇到這個沒有,那個沒有,然後先花上大把時間、精神在補齊功能後,才回過頭繼續幾乎忘光了的改寫工作。

就在長達一年多自找的浴血奮戰後,我實在無法驕傲的說「我的網站不靠 Express 也能順順的跑」,反而過程中「這用 Express 馬上就解掉了」的念頭一直冒出來。更不用說,到後來仍然引用了其它套件直接處理許多實作。

就個性使然吧,一旦不是工作,沒有壓力,就會開始冒出各種無意義的堅持。在日復一日的耕耘後回顧整個過程,全然沒有任何喜悅。有的,只是幽幽的平淡無味。然後再繼續尋覓下一個目標,周而復始。

2019-09-05 01:13:57

©2011-2022 RZ Fang 創用 CC 授權條款