一、node.js上除了Express還有哪些好用的web開發(fā)框架
Express
這個就無需再介紹了吧, 幾乎已經(jīng)成為閉眼推薦的首位, 有點在于簡單靈活, 缺陷也在于過于簡單, 相當于每個功能都需要自己選擇不同組件搭建, 雖然有各自腳手架幫助, 但對于開發(fā)大一點的系統(tǒng)還是缺乏必要的代碼框架, 光搭建整合基礎框架就會花不少時間, 對于新上手node.js不久的筆者而言,自由靈活也意味著容易犯錯, 較好有類似Djongo/ThinkPHP那樣out-of-box即開即用的開發(fā)框架快速上手而不是坐而論道.
優(yōu)點: 插件眾多, 簡單, 自由, 豐儉由人, 適合于簡單業(yè)務邏輯模型
缺點: 缺少規(guī)范性, 需要自己選擇搭配的組件太多, 不太適合應用復雜的業(yè)務.
Koa
Express基于ES6的升級版, async/await解決ES5 callback hell的痼疾, 但是選擇框架不僅僅是框架本身, 同時還要看插件擴展的豐富和成熟度, 因為沒有用過擔心后面遇坑填不平而放棄, 做研究可以大膽, 做產(chǎn)品必須謹慎.
優(yōu)點: ES6語法, 邏輯易懂
缺點: 剛開始應用不久, 擔心有擴展不足和不兼容問題
Meteor
一個完全統(tǒng)一前后臺開發(fā)的一站式框架, 從后臺數(shù)據(jù)庫到前端view全部包含在內(nèi), 特別適合于重度依賴websocket的SPA(單頁面應用)開發(fā), 國外流行的Asana就是完全采用Meteor框架開發(fā).
優(yōu)點:一站式解決方案, 前后臺一體開發(fā), 強大的websocket + mongoDB支持
缺點:自由度不夠, 和傳統(tǒng)的Web框架概念差異較大.
socketstream
如果說RESTful是Ajax的概念基礎, socketstream實際上更接近于早期RPC的思路, 將函數(shù)調(diào)用(function name + parameters)建構在websocket協(xié)議層之上, 例如下面這段代碼其實就是調(diào)用遠程函數(shù)計算.
//– server side in /server/rpc/app.js
exports.actions = function(req, res, ss){
// return list of actions which can be called publicly
return {
square: function(number){
res(number * number);
}
}
}
//– client request
ss.rpc(‘app.square’, 25)
優(yōu)點: 完全web socket, 函數(shù)+參數(shù)==>返回值概念簡單
缺點:和主流的RESTful概念偏離較大, 很少看到實際應用案例
Sails.js
這是本文的主角, 相當于針對典型應用框架所需組件在Express基礎上的集成封裝, 把日常開發(fā)常用的功能都給你集成好了, 開箱即用, 完全兼容Express的middleware, 如果了解ThinkPHP就更容易上手了, RoR / Convention over Configuration的概念可以立即進入實際業(yè)務開發(fā), 反正做什么事情應該怎么做人家都給你規(guī)定好了, 可以從實驗代碼逐步迭代到中大項目的生產(chǎn)代碼.
除了傳統(tǒng)的HTTP RESTful外還同時支持websocket – 同一個請求協(xié)議既可以通過Ajax發(fā)送, 也可以通過websocket發(fā)送, 這一點讓人贊賞.
優(yōu)點: 開箱即用的全功能Express增強框架, 內(nèi)置支持websocket
缺點:(據(jù)說)ORM性能不好
延伸閱讀:
二、HTML是什么
HTML(Hyper Text Mark-up Language )即超文本標記語言,是 WWW 的描述語言,由 Tim Berners-lee提出。設計 HTML 語言的目的是為了能把存放在一臺電腦中的文本或圖形與另一臺電腦中的文本或圖形方便地聯(lián)系在一起,形成有機的整體,人們不用考慮具體信息是在當前電腦上還是在網(wǎng)絡的其它電腦上。這樣,你只要使用鼠標在某一文檔中點取一個圖標,Internet就會馬上轉(zhuǎn)到與此圖標相關的內(nèi)容上去,而這些信息可能存放在網(wǎng)絡的另一臺電腦中。 HTML文本是由 HTML命令組成的描述性文本,HTML 命令可以說明文字、 圖形、動畫、聲音、表格、鏈接等。 HTML的結(jié)構包括頭部 (Head)、主體 (Body) 兩大部分。頭部描述瀏覽器所需的信息,主體包含所要說明的具體內(nèi)容。