被嚴重低估的Web開發框架:WordPress
前言
我在About me頁面裡說過,大學時候玩過WordPress,那時候還是2.X版本的吧,更多的是當作一個日記本在用,工作之後接觸了各種語言和新技術,Python、Ruby、Node.js等等,對WordPress越來越不待見,覺得不過就是一個部落格軟體,好多年都沒有關注了,雖然對它也挺有感情的,畢竟用過了好幾年。
前段時間,因為專案需要,想要找一個方便又好用,對開發者友好的CMS平臺,兜兜轉轉又回到了Wordpress的懷抱,還是熟悉的味道還是熟悉的配方,甚至比以前更好用了,強大的API、完整的文件、功能和社群生態圈,外觀也越來越漂亮了,很多看起來很高大上的網站一點都看不出來是背後是WordPress開發的,所以這也又一次激起了對WordPress的興趣,而且比起以前,現在更多的是從開發者的角度去看待,覺得用WordPress開發特定需求的網站是一個非常好的選擇,進而發現很早之前就有很多國外的開發者在探討這方面的趨勢和用法了,也有好幾本關於這方面內容的書,比如:
Building Web Apps with WordPress 2e
下面這篇文章的作者是 TOM MCFARLIN ,一個WordPress開發者,也是一個很高產的技術文章作者。這篇文章雖然寫的很久遠了,但是裡面的話深得我心,很有同感,曾經我也對各種新技術不想錯過,什麼都想嘗試,什麼新就用什麼,儼然一個技術追星者,但實際上現在想想只是一種自嗨罷了,是一種技術焦慮感使然,太浮躁了,覺得自己不懂不會的話就顯得落後了,對WordPress都不想正眼看一下,就像作者說道的,最終在對各種框架的選擇中迷失了本來的目的,甚至會陷於程式語言之爭,各種程式設計師屆的“聖戰”。其實, 最適合自己的才是最好的 ,哪怕它看起來沒有那麼酷炫新潮。下一步打算翻譯一下Tom的用WordPress框架進行Web開發的系列教程,敬請期待。
想比較於使用軟體端,我更喜歡在Web應用程式上工作,並且我的大部分職業生涯都專注於這一點。
我工作的最初幾年裡一直在做.NET的企業應用程式。像其他程式設計師一樣,在工作之餘,我花了很多時間來研究各種語言,框架和工具,部分原因是因為這些很有趣,部分原因是因為我希望能追上最新的技術。
但有意思的是,隨著你在Web開發上的時間越長,你就會越來越明白一件事,從本質上來說這些都是同一問題:將資料匯入資料庫並從資料庫中獲取資料。
當然,在這兩者之間還有很多事情需要考慮,但是,歸根到底,這就是最終要做的事,其他一切都是細節。
例如,大多數Web應用程式通常包括使用者管理,註冊,身份驗證,會話管理,資料清理,有效性驗證等等等等(此列表可能會變得非常冗長乏味)。
關鍵是隨著應用程式規模的增長,它們變得越來越難以維護。
當然,市面上總有各種計算機專業人士和技術佈道者,推銷各種最新最好的技術和軟體開發方法,來確保我們避免難於維護的問題。
你肯定通過各種途徑聽到很多這方面的內容:包括各種各樣的測試技術,以及可以與任何框架結合的各種設計模式,還有各種最新的庫。
不要誤會我的意思 – 所有這些事情都很重要,討論這些技術很有意思,並且絕對值得儘可能地將它們融入你的工作,但實際上它是一個無底洞 – 如果你想要找到一個“銀彈”(注:可以看下 人月神話 這本書),你最終將花掉所有時間,而且你很可能永遠無法實現你要構建東西。
這就是框架派上用場的地方了。各種開發語言都有許多框架旨在解決Web開發中的組織,維護和平凡任務的問題。這太棒了。說真的,在碰到繁瑣又單調乏味的。軟體開的大部分都是這種任務。
但是,暗黑的一面是,你最終會在陷入一種宗教戰爭,哪種框架最好,然後會變成哪種語言最好,突然間我們不僅 沒有 做出我們本想要做的東西,也沒有做出爭論需要得出的結論:那就是我們有 太多的 選擇來進行開發。
很奇怪,對嗎?
如果Web應用程式都可以簡化到相同的兩件事 – 即資料和資料輸出 – 那就有很多選擇,為什麼不坐下來試試結合哪幾套工具可以更好的幫助你解決你自己,並選擇你或你的團隊最喜歡使用的工具集呢?
不管怎麼說,多年來我工作中的大部分時間在.NET上,並且在花了很多業餘時間在Rails上。事實是,兩個我都喜歡。我還花時間瞎搞了各種其他框架和語言。在這同時,我還在WordPress上維護了一個小部落格(那時還是WordPress 2.x版本)。
不知道從什麼時候起,我開始在WordPress上為我的部落格做更多的自定義,然後我開始為其他人做些小的自定義,然後我開始構建更大的專案,並且隨著我開始在WordPress的開發者平臺Codex上自學的越來越多, 我真的開始越來越喜歡與之合作。
WordPress通常不被視為應用程式開發的選項,也不被視為軟體開發的技術堆疊之一。但如果你在WordPress上花費足夠長的時間,就像你花費在開發其他網路應用程式時那樣,你就會開始認識到許多相同的事情:
- 資料庫
- 中介軟體
- 展示
- 使用者管理(註冊,認證等)
- 資料清理和驗證
- 快取機制
- 等等等
結論:WordPress是一個完全可行的應用程式開發選項。
基於這一點,我花費了大量時間用WordPress為 我的創業公司 和 其他人 構建產品,我真的很喜歡它。這就提出了一個有趣的問題:為什麼在構建某些型別的Web應用程式時WordPress不被認為是一個可選項?
不,我並不提倡在WordPress上構建一個社交網路 – 就像我已經說過的,找到能 最好的 解決你的問題的合適工具才是關鍵 – 完全值得考慮一下用WordPress開發某些型別的Web應用程式。
那麼,回到原來的問題,為什麼wordpress 不 被這樣看待呢?
我相信這可以歸結為WordPress的營銷策略和外在形式,它是被當作一款產品,而不是作為一種框架呈現給世人。開發人員不是目標受眾。在引起人們對Wordpress的API關注度,或者用 WordPress開發Web應用程式的可行性方面,基本沒有任何的推廣和介紹。
相反,它被看作是一個部落格平臺,內容管理系統或輕鬆搭建網站的方式。
所有其他框架 – 無論是Zend,Rails,Sinatra,.NET MVC,CakePHP等 – 都將自己呈現為一種有助於軟體開發的形式。而WordPress給人的印象卻是一種可以用來寫作 關於框架、軟體 (顯然還可以包括其他任何東西)的內容的部落格平臺。
但對於開發者來說,深入瞭解WordPress後,你會發現它的功能與其他技術棧一樣多,並且開發過程與其他任何框架並無二致,而且也會有“讓我歡喜讓我憂”的體驗。
但那就是另一個故事了。
原文地址
WordPress For Application Development | Tom McFarlin
延伸閱讀
下面的視訊(需要翻牆), Using WordPress as a development framework [Jeff Pearce] – WordCampCT 2011 ,是 Jeff Pearce 分享的用Wordpress做框架開發的一些介紹和講解,還演示了一個demo。Jeff是著名的Wordpress電商外掛woocommerce的核心開發者之一。