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