跳至內容

Fibjs

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

Fibjs是一个會當佇遮侍服器捀執行 JavaScript 開放原始碼、跨平台 JavaScript 執行環境。Fibjs 使用協程,仝步風格 & 非常的窒 IO 模型來構建會伸勼的懸可用的系統 . Fibjs 有含一系列內底建模組,予程式會當脫離 Apache HTTP Server 抑是 IIS,做為獨立的侍服器執行。Fibjs 出現降低矣開發者的開發難度,閣大大提升呢 javascript 咧侍服器捀效能表現。

概覽

Fibjs 允准通過 JavaScript 和一系列模組來編寫侍服器捀應用和網路相關的應用。核心模組包括檔案系統 I / O、網路(HTTP、TCP、UDP、DNS、TLS / SSL 等)、 二進位資料流、加密演算法、圖像處理等等。Fibjs 模組的 API 形式簡單,降低編程的複雜度。

Fibjs 內起了 ØMQ 提供鏈式的訊息處理器,所以會當用二十行代碼開發出有動態的資料回應佮靜態檔案服務功能的侍服器捀框殼。Fibjs 的程式會當佇 Microsoft Windows、Linux、Unix、Mac OS X、Arch Linux 等待服器上執行。Fibjs 嘛會使用 CoffeeScript(一款旨佇咧簡化 JavaScript 的替代語言,其代碼會當按照一定規則轉化為合法的 JavaScript 代碼)、 TypeScript(軟軟開發的強化矣資料類型的 JavaScript 變體)、 Dart 語言,猶閣有其他會當編譯做 JavaScript 的語言編程。

Fibjs 主要愛用編寫的像 Web 侍服器仝款的網路應用,這和 Node . js 是類似的。猶毋過 Fibjs 佮 Node . js 上大的無仝佇咧講,Node . js 是有夠要緊的(多條命令會當同時予人執行,通過回呼函式知影命令已結束執行), 而且 Fibjs 是窒起來的,伊的風格閣較倚 C 語言,伊的機制佮 Go 閣較成,Fibjs 是採用足窒車的 IO 模型,但是提供予使用者使用的 API 是窒起來的,伊的特色是使用 coroutine 中文名叫協程這和 Go 咧採用的 Goroutine 足成足成,予伊要緊 API 袂窒起來 javascript 執行緒,干焦對閣較大的並且。所以 Fibjs 嘛非常的適合網路服務。

Coroutine 是類似執行緒的概念(猶毋過 Coroutine 並毋是執行緒)。 執行緒屬於系統層面,通常來講建立一个新的執行緒會消磨較濟的資源閣管理無簡單。而且 Coroutine 就親像輕量級的執行緒,但是阮講其實並行,一个 Fibjs 程式會當執行超過數萬个 Coroutine,而且遮的效能攏是原生級的,隨時攏會當關起來、結束。一个核心內底會當有偌个 Coroutine。 佇內起的官方包內底嘛不時通看嘛會著 Coroutine 的應用,像講 net / http 中用來監聽網路服務的函式實際上是建立一个不斷執行迴圈的 Coroutine。

Fibjs 使用 Google V 八 JavaScript ia̋n-jín,因為乎:

  • V 八的執行緒支援 Coroutine 重入
  • V 八是差不多 BSD 授權條款的開源軟體
  • V 八速度非常的緊
  • V 八專注過網路功能,佇咧 HTTP、DNS、TCP 等方面更加成熟

Fibjs 內建近一百五十个內建模組和物件,已經有數十萬个 javascript 模組,𪜶會當過一个叫做 npm 的管理器免費下載。

歷史

Fibjs 佇二空一二年寫做,其作者是劉珀(Leo Hoo), 網名叫做響馬,箍仔內人攏尊稱伊大叔抑是馬叔。劉琥同時是開源侍服器應用框架 Netbox 的作者、中國出名社群網站西祠胡同創始人。

Fibjs 的出現源自於一个名為「孢子社群」的一个案,佇咧做技術選型的時考慮著前後端代碼復用,方便招開發人員等原因,決定將後端轉向 JS 平台。彼當陣,劉珀認為講 Node . js 的非同步開發模式毋是一个適合大規模部署的方式,會共開發佮維護帶來誠大問題。劉琥珀閣較傾向使用 Go 的方式來實現非同步,對會當達到閣較懸的並行,所以 Fibjs 就出現矣。

  • 二空一二年二月,Fibjs 專案啟動
  • 二空一二年九月,Fibjs 開始佇孢子社群生產環境試執行
  • 二空一三年初,公開 fibjs 資訊
  • 兩千空一四年五月,專案推播 Github,徹底開源
  • 二空一四年十月,南京源創會,頭一擺開講,引起業界轟動
  • 二空一六年七月,Fibjs 第四改 Fiber 改造,實現 M : N 多執行緒佮多 Fiber 嘿映模型。
  • 二空一七年三月,node . js 南京地下鐵沙龍,Fibjs 作者劉珀作為特邀嘉賓介紹 Fibjs,並和 nodejs 開發者進行矣一場激烈的辯論。

程式範例

用 Fibjs 撰寫的 HTTP Server 版 hello world 範例:

另外一个簡單的 TCP 侍服器範例,監聽(Listening)埠七千並輸出 ( echo ) 進前輸入的資訊:

上例中第二个程式,演示了如何使用 Coroutine,coroutine 予得 while ( 一 ) 袂窒得後壁的代碼對而實現矣並行。

技術

Coroutine

Fibjs 以單執行緒執行,使用非常的阻塞 I / O 搧叫,按呢既然會當支援數是以萬計的並行連接,閣袂因為濟執行緒本身的特點佮來麻煩。濟濟請求只使用單執行緒的設計意味著會當用佇建立懸並行應用程式。Fibjs 應用程式的設計目標是任何需要操作 I / O 的函式攏用 Coroutine 協程來完成。當使用 Fibjs 來曝服器應用開發的時陣,逐改佮客戶捀建立連接攏會建立一个 Fiber ( task ) 囥佇列中等待,javascript 執行緒照次取 fiber 執行,逐當執行到甲講 I / O 操作,Coroutine 攏會共頂下文交換到後台執行緒 ( worker thread ) 來完成相應的操作,並且共 Javascript 的頂下文被切換到後一个 fiber 中繼續執行。做後台執行緒的 fiber 執行煞了後會重新共 fiber 幫忙在列尾部等待,等待 Javascript 執行到該 fiber。對咧完成這非同步的操作。

V 八

V 八是為 Google Chrome 設計的 JavaScript 執行 ia̋n-jín,Google 佇二空空八年會其開源。V 八用 C + + 寫做,伊將 JavaScript 原始碼編譯成本地機器碼毋是隨時解說。

Fibjs 的核心功能去予人包含進一个 JavaScript 庫,而且通過 C + + 共各部份佮作業系統進行聯絡。

npm

npm 是 Node . js 佮的包管理器。Fibjs 懸度相容矣 npm。npm 是一个命令列工具,用佇對 NPM Registry 中下載、安裝 Fibjs 程式,同時解決依賴問題。npm 提懸矣開發的速度,因為伊會當負責第三方 Fibjs 程式的安裝佮管理。

統一 API

Fibjs 將瀏覽器、資料(比如講 MongoDB 抑是 Redis)等組合做伙,通過 JSON 提供一个統一的介面。因為頭前捀框架佮一寡基本的後端開發技術(如 MVC、MVP、MVVM 等)變甲流行,Fibjs 嘛支援客戶捀和侍服器捀重新利用仝款的模型和介面。

參考文獻