ThinkJS 2.0,帶你超越夢想一起飛

jopen 9年前發布 | 21K 次閱讀 thinkjs

ThinkJS 是奇舞團開源的一款 Node Web MVC 框架,由 welefen 主導設計和開發,ThinkJS 1.0 于 2014 年 9 月首次公開發布(詳情)。一年后的今天,ThinkJS 帶著眾多新特性,以及完全重新設計的新架構,迎來了 2.0 版。作為 ThinkJS 的早期用戶和忠實粉絲,我希望通過本文能讓更多人認識 ThinkJS 這個優秀的 Web 框架。順便說一句,我這個博客系統也是完全基于 ThinkJS 開發。

ThinkJS 1.0

ThinkJS 1.0 發布時的 Slogan 是什么呢?—— 基于 Promise 的 Node.js MVC 框架 —— 樸實到極致的一句話,甚至都不能稱之為 Slogan,只能算是 ThinkJS 眾多特性中的一個小點罷了。在我眼中,ThinkJS 1.0 是一次從無到有的突破,她在命名和項目結構上大量借鑒了 ThinkPHP 這個在國內知名度很高的 PHP 框架,同時內置了大量實用功能,使得任何一個略有服務端及數據庫基礎的同學都可以基于她來快速開發 Web 項目。

這一年來,ThinkJS 1.0 建立了自己的社區,培養了一批種子用戶,也有更多的人參與進來。開發者在使用框架中遇到的問題,基本上很快都可以得到解決,版本更新也在按既定節奏有條不紊地進行。整個項目發展十分順利,處于非常健康的狀態。

ThinkJS 2.0

這次 ThinkJS 2.0 新官網上的 Slogan 換成了「The web framework beyond your dreams」,這也是本文標題的來源。如果說 ThinkJS 1.0 的 Slogan 樸實而理性,那 2.0 的 Slogan 給我的感覺絕對是性感而充滿力量。就像蘋果的「Think different」和耐克的「Just do it」,好產品的 Slogan 不需要刻意強調自己是什么,只需傳遞精神層面上的感受即可直擊內心深處。

當然,ThinkJS 2.0 在技術上的改進和創新也是干貨滿滿:

全面支持 ES6/7 特性:服務端 JS 有個很大的優勢 —— 沒有終端兼容性問題。在瀏覽器端,某個新特性只要還有 1% 的瀏覽器不支持,我們就必須考慮引入 polyfill 或者進行降級處理。而在服務端,只要愿意隨時都可以使用最新的 Node.js,主動權在我們手中。隨著 Node.js 和 io.js 的合并,相信服務端 JS 演進速度會進一步加快。移動 Web 端對 ES5 支持良好,「使用 ES6/7 特性編寫代碼,再借助 TypeScript/Babel 等工具編譯出 ES5 環境可以運行的代碼」這種做法已經十分普遍。ThinkJS 2.0 也順應了時代發展。使用 Babel 編譯工具,你可以在項目中大膽使用 ES6/7 所有特性,無需擔心哪些特性當前版本不支持,例如官方示例代碼就大量使用了 classexportlet 等關鍵字。另外,ThinkJS 2.0 還正式支持使用 */yieldasync/await 來更好地編寫異步代碼邏輯,不需要像之前那樣要自己處理(詳情)。

豐富的基礎功能:現在很多框架,真的只是一個框架,骨架之外的東西都需要自己動手豐衣足食。而經過大量實際項目檢驗的 ThinkJS,在內置功能豐富度和實用性上絕對是一大亮點。例如我們的一個性能監控系統,需要周期性的跑一些腳本任務,ThinkJS 天然支持命令行調用模式。通過命令行調用具體的 Action,既沒有 HTTP 服務的開銷和超時機制,也容易控制代碼執行權限。再例如,WebSocket 是一個很常見的功能,ThinkJS 集成了多種常見的 WebSocket 庫,抹平差異并提供一致的接口,使用非常方便。像常見的數據庫操作、數據校驗、REST 接口生成等功能,框架本身也都內置,只需要寫很少代碼就能完成需求。ThinkJS 2.0 除了延續和重構了全部 1.0 功能模塊外,還增加了很多新模塊,等待你去發現。

良好的可擴展性:之前我介紹過 ThinkJS 1.0 的 Tag 和 Behavior 機制(詳情),并在最后寫到「據說在 ThinkJS 2.0 里,Behavior 已經被 middleware 取代」。是的,這個變化如約而至。一個框架功能再強大,也不可能滿足所有場景所有需求,而新的 hookmiddleware 機制與規范,可以很方便地擴充 ThinkJS 功能,并且具備良好的復用性。如果大家都將平時的定制化功能抽象為中間件并開源出來,整個 ThinkJS 生態環境會變得更好。月影大牛已經率先分享了一個微信中間件:think-wechat,相信后續會有更多非官方中間件誕生。其他方面,例如路由規則、模板引擎、緩存等各個環節,ThinkJS 都有相應的機制可以讓你可以充分自定義和擴展。

專業測試與持續支持:很多人在選用第三方組件或框架時,國人的作品往往會被不公平對待,常見原因無外乎這兩個:1)坑多;2)爛尾。對于這個現象我不做評論,我想說的是任何事情都需要區別對待,不要以偏概全、一葉障目。ThinkJS 有著良好的項目基礎,在公司內部已經形成了框架 -> 項目 -> 框架的閉環,每個功能都來自于實際需求,并在項目中得到充分檢驗。豐富的單元測試用例和持續集成機制保證了框架的穩定,整體性能、內存泄露以及框架安全性等方面也都經過了嚴格測試。ThinkJS 2.0 作為一個完全開源的框架,從背后作者和團隊來看,可靠性和后續支持都是非常有保障的。

篇幅有限,更多關于 ThinkJS 2.0 的介紹,還請移步官網

超越夢想一起飛

最近有不少人問過我一些職業發展相關的問題,之前的文章過于技術不方便寫出來,今天這里列出其中兩個:1)今年互聯網普遍遇冷,工作不好找怎么辦?2)工作了好幾年,感覺自己在前端領域已經到達天花板,成長遇到瓶頸,不知道該怎么辦?

關于這兩個問題,我不知道各位怎么看,我的觀點是:1)今年互聯網確實少了一些浮躁與浮夸,但優秀的人從來不愁找工作,反而現在大量優秀公司在抱怨招人難;2)很多抱怨到達天花板的人,真實情況往往是不愿意走出自己的技術舒適區,沒有突破自然無法成長。

現在前端早就不是前些年守著頁面那一畝三分地就能做好的職業。隨著 Web 技術的爆炸式發展,在移動 HTML5、微信平臺、智能硬件、云服務和游戲等眾多新方向上,都需要專業前端去耕耘;HTTP(HTTPS、HTTP/2)協議、性能優化、網絡安全等等方面,都有大量知識需要我們去學習和掌握。最近有一本網友翻譯的《前端開發者手冊》,其中第二、三部分對現代前端所需要掌握的大部分知識和工具做了詳細的介紹,有興趣的同學可以去看看。

也許有一天,你會發現自己真的觸碰到技術天花板,我相信以你那時的學習能力、知識體系、項目經驗、人生閱歷、財富人脈,根本就不用擔心未來的路該如何走。

我在之前的博客中多次提到,作為專業 Web 前端,必須掌握一定的服務端知識和網絡知識。前端和服務端結合起來,再加上網絡協議,才構成一個完整的 Web 系統。而 Node.js,無疑是前端同學實踐服務端的最佳選擇。選擇 ThinkJS 這樣成熟的 Node 框架學習服務端開發,配合全中文文檔,任何人都可以輕松上手。后續可以通過閱讀 ThinkJS 源碼,去了解服務端 MVC 的基本原理,去掌握處理 Request 和 Response 的技術細節。接著還可以嘗試給 ThinkJS 發 Pull Request,或者開發 ThinkJS 中間件放在 Github 讓更多人用。整個學習過程由簡入難、從淺到深,效果非常好。

很多人接觸服務端都是從搭建自己的博客開始,我也不例外(詳情)。我也非常推薦大家嘗試基于 ThinkJS 寫一個博客系統(實在不愿意寫選擇 Wordpress、Typecho、Ghost 等等也可以);再購買一個 Linux VPS(如果你是在校大學生,可以選擇騰訊的校園計劃或者阿里的云翼計劃,成本很低),從最基本的創建帳號、配置 SSH 登錄開始,嘗試自己把博客環境搭起來;接著就可以購買域名甚至 SSL 證書,配置 DNS 解析,讓博客可以通過域名在公網上訪問;后續還要持續關注服務器性能與安全等運維信息,以及進行各種前后端優化實踐(例如編譯最新的 Nginx,玩一下 HTTP/2);最后再把這些折騰經歷都在博客寫出來。相信我,當你成功完成這一切后,你已經走出自己的技術舒適區,進入到一片更加廣闊的天地。

本文鏈接:參與評論

--EOF--



來自:https://imququ.com/post/thinkjs-2.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!