這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
http://goexpresstravel.com/
今天 Express 的作者 TJ Holowaychuk 發了一篇文章,正式宣告和 Node.js 拜拜了,轉向 Go 語言。
Go verses Node
如果你在做分布式工作,你會發現 Go 語言豐富的並發原語非常有協助。雖然我們用 Node 的 generator 也可以做類似的事,但在我看來,generator 永遠只能做一半。沒有獨立的棧錯誤處理和報告,充其量是中等。我也不想再等(Node)社區花3 年去整理(改善),尤其是我們已經有了可用並不錯的解決方案。
在我看來,Go 語言的錯誤處理非常出色。必須考慮每個錯誤,決定該怎麼做,Node 在這方面挺好的。不過 Node 在下面這些方面,就……
you may get duplicate callbacks
ou may not get a callback at all
you may get out-of-bound errors
emitters may get multiple “error” events
missing “error” events sends everything to hell
often unsure what requires “error” handlers
“error” handlers are very verbose
callbacks suck
當然了,作者也說了,NodeJS 也挺好,但他在目前項目中是沒興趣再用了。他轉向 Go 語言,也並不意味著 Go 就完美無缺。
另外,因為放棄 NodeJS,作者在找人維護。
beego是一個用Go開發的應用程式框架,思路來自於tornado,路由設計來源於sinatra,支援如下特性
MVC
REST
智能路由
日誌調試
組態管理
模板自動渲染
layout設計
中介軟體插入邏輯
方便的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.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 應用樣本:
簡單的例子:TodoMVC
複雜一點的例子:聊天用戶端
Flux 一個資料流周期:
Views ---> (actions) ----> Dispatcher ---> (registered callback) ---> Stores -------+Ʌ || V+-- (Controller-Views "change" event handlers) ---- (Stores emit "change" events) --+
Flux 相關文檔:
一個用於React的應用架構
Flux 架構
TodoMVC 指南
還有reflux
React入門:關於JSX文法
發表於 2015年04月29日 by 愚人碼頭 被瀏覽 1,985 次
JSX文法,像是在Javascript代碼裡直接寫XML的文法,實質上這隻是一個文法糖,每一個XML標籤都會被JSX轉換工具轉換成純Javascript代碼,React 官方推薦使用JSX, 當然你想直接使用純Javascript代碼寫也是可以的,只是使用JSX,組件的結構和組件之間的關係看上去更加清晰。
看代碼:
- //使用JSX
- React.render(
- <div>
- <div>
- <div>content</div>
- </div>
- </div>,
- document.getElementById('example')
- );
-
- //不使用JSX
- React.render(
- React.createElement('div', null,
- React.createElement('div', null,
- React.createElement('div', null, 'content')
- )
- ),
- document.getElementById('example')
- );
那麼也就是說,我們寫一個XML標籤,實質上就是在調用React.createElement
這個方法,並返回一個ReactElement
對象。
查看API:http://www.css88.com/react/docs/top-level-api.html#react.createelement
- ReactElement createElement(
- string/ReactClass type,
- [object props],
- [children ...]
- )
這個方法的第一個參數可以是一個字串,表示是一個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
- 工業標準OLE for Process Control
- 有機光導體OrganicPhotoconductor
- 原花青素OPC
- 超速保護控制
- 光學鄰近效應校正
- 普通矽酸鹽水泥
- 源信令點編碼
- DNA純化手段