1. 程式人生 > >ThinkJS 2.0,帶你超越夢想一起飛

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

提醒:本文最後更新於 1169 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

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 所有特性,無需擔心哪些特性當前版本不支援,例如官方示例程式碼就大量使用了 class

exportlet 等關鍵字。另外,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);最後再把這些折騰經歷都在部落格寫出來。相信我,當你成功完成這一切後,你已經走出自己的技術舒適區,進入到一片更加廣闊的天地。

Update @ 2015.11.01,本部落格系統已經成功遷移到 ThinkJS 2.0。大家在使用或遷移 ThinkJS 的過程中如果遇到問題,歡迎留言,或者給專案提 Issue

--EOF--

提醒:本文最後更新於 1169 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

相關推薦

ThinkJS 2.0超越夢想起飛

提醒:本文最後更新於 1169 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 ThinkJS 是奇舞團開源的一款 Node Web MVC 框架,由 welefen 主導設計和開發,ThinkJS 1.0 於 2014 年 9 月首次公開發布(詳情)。一年後的今天,ThinkJS 帶著眾多

關於TensorFlow 2.0這裡有想知道的一切

全文共8094字,預計學習時長30分鐘或更長 圖片來源:pexels.com/@pixabay TensorFlow是谷歌

裝B飛》pytest成神之路2- 執行用例規則和pycharm執行的三種姿態

1. 簡介   今天北京下的雪好大好美啊!!!哎呀,忘記拍照片了,自己想象一下吧。言歸真傳,今天還是開始pytest的學習和修煉,上一篇寫完後群裡反響各式各樣的,幾家歡樂幾家愁,有的高興說自己剛好要用到了,正好一起學習,有的不開心說自己介面還沒有學完了,沒關係的學習本來就不是一件一蹴而就的事情,需要日積月累

C#9.0 終於來了一起解讀Pattern matching 和 nint 兩大新特性玩法

## 一:背景 ### 1. 講故事 上一篇跟大家聊到了`Target-typed new` 和 `Lambda discard parameters`,看部落格園和公號裡的閱讀量都達到了新高,甚是欣慰,不管大家對新特性是多頭還是空頭,起碼還是對它抱有一種極為關注的態度,所以我的這個系列還得跟,那就繼

C#9.0 終於來了一起解讀 nint 和 Pattern matching 兩大新特性玩法

## 一:背景 ### 1. 講故事 上一篇跟大家聊到了`Target-typed new` 和 `Lambda discard parameters`,看部落格園和公號裡的閱讀量都達到了新高,甚是欣慰,不管大家對新特性是多頭還是空頭,起碼還是對它抱有一種極為關注的態度,所以我的這個系列還得跟,那就繼

搶先學鴻蒙(HarmonyOS)2.0就是下一個大咖!

  1. 你不知道的鴻蒙(HarmonyOS)   2020年9月10日,華為開發者大會發布了鴻蒙(HarmonyOS)2.0。我在2020-9-11日也釋出了全球首套鴻蒙2.0 App開發視訊課程《鴻蒙(HarmonyOS)2.0入門與實戰》【提前一個月做完了,由於保密協議的原因,只能

保姆級教程認識大資料0到1搭建 Hadoop 叢集

# 大資料簡介,概念部分 概念部分,建議之前沒有任何大資料相關知識的朋友閱讀 ## 大資料概論 ### 什麼是大資料 大資料(Big Data)是指**無法在一定時間範圍**內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的**海量、高增長

【轉】手摸手用vue擼後臺 系列二(登錄權限篇)

userinfo ogr abort 變化 再次 狀態碼 quest -o 監聽 前言 拖更有點嚴重,過了半個月才寫了第二篇教程。無奈自己是一個業務猿,每天被我司的產品虐的死去活來,之前又病了一下休息了幾天,大家見諒。 進入正題,做後臺項目區別於做其它的項目,權限驗證與

【幹貨篇】步步為營輕松掌握jQuery!

red submit 所有 onf rec 選中 jquer 分別是 綁定 寫在前面: 經過系統的學習了原生JS之後,會發現其具有以下三個特點: 1、是一種解釋性腳本語言(代碼不進行預編譯)。 2、主要用來向 HTML 頁面添加交互行為。 3、可以直接嵌入 HTML

3分鐘讀懂大公司的“高效溝通”套路-h5二八杠源碼

緊急 需求評審 無形中 突出 遇到 經理 活動方案 好項目 也會 新人小白初入職場的一段時間內會發現h5二八杠源碼(h5.hxforum.com) 聯系方式170618633533企鵝2952777280 微信Tel17061863533 源碼出售,平臺出租,房卡出售有意者

ECS主動運維2.0體驗升級事半功倍

存儲摘要: 阿裏雲致力於提供更好用的運維體驗,讓您使用ECS的過程更透明、高效,並實現更加標準化、自動化的運維方式。基於主動運維2.0,您使用ECS雲服務器的體驗更加流暢,而且利用系統事件,不再依賴於工單聯系客服,可以通過自助處理的方式響應主動運維實例重啟,減少對系統可靠性和業務連續性的影響。 雲服

十篇TED點擊率最高演講重新認識大數據與人工智能

一次 改善 class 防止 郵件 不知道 一位 -i 結果 我們通常過於專註於機器學習算法的實現,傾向於忽略這種技術本身的一些重要問題:如未來的應用和政治後果。在這篇文章中,我們從非常受歡迎的非營利組織TED上收集了一系列的視頻(並非關註於選擇什麽語言或算法來解決機

大數據:“給我一把98K吃雞吃到嗨”

大數據想要在大數據行業裏‘吃雞’,首先我們的了解大數據以後的發展趨勢。 2018年大數據技術目前已日趨成熟,日後會在系統研發、大數據應用開發和大數據分析方向上分類更加的精確和細致。總的來說大數據有5個部分。數據采集,數據存儲,數據洗清,據挖掘數,數據可視化。 據采數集有硬件采集,如OBD,有軟件采集,如滴滴,

瞄一眼走進SparkSQL的世界

算法實現 都是 自己 中一 external 數據可視化分析 什麽 領域 bbc 本文由 網易雲 發布。 作者:範欣欣(本篇文章僅限知乎內部分享,如需轉載,請取得作者同意授權。) 最近想來,大數據相關技術與傳統型數據庫技術很多都是相互融合、互相借鑒的。傳統型數據庫強勢

從AlexNet到MobileNet入門深度神經網絡

架構 函數 摘要: 在2018年3月13日雲棲社區,來自哈爾濱工業大學的沈俊楠分享了典型模式-深度神經網絡入門。本文詳細介紹了關於深度神經網絡的發展歷程,並詳細介紹了各個階段模型的結構及特點。哈爾濱工業大學的沈俊楠分享了典型模式-深度神經網絡入門。本文詳細介紹了關於深度神經網絡的發展歷程,並詳細介紹了

Linux程序培訓課程養成良好的Linux使用習慣

雲計算開始Linux的學習之後,請不要用Windows的工作方式來思考問題,因為它們之間確實有很大的不同,比如它們之間的內存管理機制、進程運行機制等都有很大不同,因此拋開Windows的那種思維,用全新的理念嘗試去挖掘Linux身上特有的潛質,對初學者是至關重要的。 1 一定要習慣命令行方式 Linux是由命

50 行 Python 代碼追到最心愛的人

答疑 bad 程序員 cdn 其中 分享 發送 愛的 圖片 程序員世紀難題 人們一提到程序員第一反應就是:我知道!他們工資很高啊!但大部分都是單身狗,不懂得幽默風趣,只是每天穿格子 polo 衫的宅男一個。甚至程序員自己也這樣形容自己:錢多話少死的早。程序員總是愛這樣黑自

【精選福利】運維自動化技能上線脫離運維苦海。現在訂閱還有自選圖書相送

日誌 福利 目錄 51cto 新增 開發 容器 學會 book 苦海無邊,回頭是岸。學會運維自動化,帶你脫離無邊的運維苦海 標題: 輕松玩轉ELK海量可視化日誌分析系統評價:數據時代運維心法作者:南非螞蟻試讀:ELK應用架構介紹(附專欄目錄)專欄地址:http://bl

Sentinel 發布0.2.0異步調用支持、熱點參數限流等成產品新亮點

blog lru 服務架構 切入點 線下 提取 str 名單 dash Sentinel 是阿裏中間件團隊開源的,面向分布式服務架構的輕量級流量控制組件,主要以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度來幫助用戶保護服務的穩定性。 近日,Sentinel 0

深入python協程的實現層揭開協程的神祕面紗!

協程與 子例程一樣,協程(coroutine)也是一種程式元件。相對子例程而言,協程更為一般和靈活,但在實踐中使用沒有子例程那樣廣泛。協程源自 Simula 和 Modula-2 語言,但也有其他語言支援。 看完之後,我的表情是這樣的: 用專業詞彙解釋專業詞彙,相當於沒說