【go】腦補框架 Express beego tornado Flux reFlux React jsx jpg-ios出品

http://goexpresstravel.com/css

 

今天 Express 的做者 TJ Holowaychuk 發了一篇文章,正式宣告和 Node.js 拜拜了,轉向 Go 語言。html

Go verses Node

若是你在作分佈式工做,你會發現 Go 語言豐富的併發原語很是有幫助。雖然咱們用 Node 的 generator 也能夠作相似的事,但在我看來,generator 永遠只能作一半。沒有獨立的棧錯誤處理和報告,充其量是中等。我也不想再等(Node)社區花3 年去整理(改善),尤爲是咱們已經有了可用並不錯的解決方案。node

在我看來,Go 語言的錯誤處理很是出色。必須考慮每一個錯誤,決定該怎麼作,Node 在這方面挺好的。不過 Node 在下面這些方面,就……python

  • you may get duplicate callbacksreact

  • ou may not get a callback at allgit

  • you may get out-of-bound errorsgithub

  • emitters may get multiple 「error」 eventsweb

  • missing 「error」 events sends everything to hell算法

  • often unsure what requires 「error」 handlersexpress

  • 「error」 handlers are very verbose

  • callbacks suck

固然了,做者也說了,NodeJS 也挺好,但他在目前項目中是沒興趣再用了。他轉向 Go 語言,也並不意味着 Go 就天衣無縫。

另外,由於放棄 NodeJS,做者在找人維護。

 

beego是一個用Go開發的應用框架,思路來自於tornado,路由設計來源於sinatra,支持以下特性

  1. MVC

  2. REST

  3. 智能路由

  4. 日誌調試

  5. 配置管理

  6. 模板自動渲染

  7. layout設計

  8. 中間件插入邏輯

  9. 方便的JSON/XML服務

官網 http://beego.me

快速入門代碼以下所示:

package main
 
import (
    "github.com/astaxie/beego"
)
 
type MainController struct {
    beego.Controller
}
 
func (this *MainController) Get() {
    this.Ctx.WriteString("hello world")
}
 
func main() {
    beego.Router("/", &MainController{})
    beego.Run()
}

 

 

補腦:

Tornado 是 FriendFeed 使用的可擴展的非阻塞式 web 服務器及其相關工具的開源版本。這個 Web 框架看起來有些像web.py 或者 Google 的 webapp,不過爲了能有效利用非阻塞式服務器環境,這個 Web 框架還包含了一些相關的有用工具 和優化。

Tornado 和如今的主流 Web 服務器框架(包括大多數 Python 的框架)有着明顯的區別:它是非阻塞式服務器,並且速度至關快。得利於其 非阻塞的方式和對 epoll 的運用,Tornado 每秒能夠處理數以千計的鏈接,這意味着對於實時 Web 服務來講,Tornado 是一個理想的 Web 框架。咱們開發這個 Web 服務器的主要目的就是爲了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用裏每個活動用戶都會保持着一個服務器鏈接。(關於如何擴容 服務器,以處理數以千計的客戶端的鏈接的問題,請參閱 C10K problem。)

請參見 Tornado 文檔 或 Tornado 原文文檔(鏡像)以詳細瞭解該 Web 框架。

 

 

 

Flux 是一個Facebook開發的、利用單向數據流實現的應用架構,用於 React。Flux應用有三個主要的部分組成:調度程序、存儲和視圖(React 組件)。

Facebook工程經理Tom Occhino說,因爲他們「很是巨大」的代碼庫和龐大的組織,於是須要「以某種方式使代碼結構化,使其更加可預測」。這已經經過 Flux 和 React 完成。Flux是一個系統架構,用於推動應用中的數據單向流動。React是一個JavaScript框架,用於構建「可預期的」和「聲明式的」Web用戶界面,它已經使Facebook更快地開發Web應用。 

Flux 應用示例:

Flux 一個數據流週期:

Views ---> (actions) ----> Dispatcher ---> (registered callback) ---> Stores -------+
Ʌ                                                                                   |
|                                                                                   V
+-- (Controller-Views "change" event handlers) ---- (Stores emit "change" events) --+

Flux 相關文檔:

 

還有reflux

 

 

 

 

 

 

 

 

React入門:關於JSX語法

JSX語法,像是在Javascript代碼裏直接寫XML的語法,實質上這只是一個語法糖,每個XML標籤都會被JSX轉換工具轉換成純Javascript代碼,React 官方推薦使用JSX, 固然你想直接使用純Javascript代碼寫也是能夠的,只是使用JSX,組件的結構和組件之間的關係看上去更加清晰。

看代碼:

  1. //使用JSX
  2. React.render(
  3. <div>
  4. <div>
  5. <div>content</div>
  6. </div>
  7. </div>,
  8. document.getElementById('example')
  9. );
  10.  
  11. //不使用JSX
  12. React.render(
  13. React.createElement('div', null,
  14. React.createElement('div', null,
  15. React.createElement('div', null, 'content')
  16. )
  17. ),
  18. document.getElementById('example')
  19. );

那麼也就是說,咱們寫一個XML標籤,實質上就是在調用React.createElement這個方法,並返回一個ReactElement對象。

查看API:http://www.css88.com/react/docs/top-level-api.html#react.createelement

  1. ReactElement createElement(
  2. string/ReactClass type,
  3. [object props],
  4. [children ...]
  5. )

這個方法的第一個參數能夠是一個字符串,表示是一個HTML標準內的元素,或者是一個ReactClass類型的對象,表示咱們以前封裝好的自定義組件。第二個參數是一個對象,或者說是字典也能夠,它保存了這個元素的全部固有屬性(即傳入後基本不會改變的值)。從第三個參數開始,以後的參數都被認做是元素的子元素。

轉化

React JSX將相似XML的語法轉化到原生的JavaScript,元素的標籤、屬性和子元素都會被看成參數傳給React.createElement方法: Continue reading 

 

 

---Koa -- 基於 Node.js 平臺的下一代 web 開發框架

 

koa 是由 Express 原班人馬打造的,致力於成爲一個更小、更富有表現力、更健壯的 Web 框架。使用 koa 編寫 web 應用,經過組合不一樣的 generator,能夠免除重複繁瑣的回調函數嵌套,並極大地提高錯誤處理的效率。koa 不在內核方法中綁定任何中間件,它僅僅提供了一個輕量優雅的函數庫,使得編寫 Web 應用變得駕輕就熟。

 

 

JPEG (Joint Photographic Experts GROUP)是由國際標準組織(ISO:International Standardization Organization)和國際電話電報諮詢委員會(CCITT:Consultation Commitee of the International Telephone and Telegraph)爲靜態圖像所創建的第一個國際數字圖像壓縮標準,也是至今一直在使用的、應用最廣的圖像壓縮標準。JPEG因爲能夠提供有損壓縮,所以壓縮比能夠達到其餘傳統壓縮算法沒法比擬的程度。

 

 

opc

相關文章
相關標籤/搜索