基于Node的高性能MVC框架

趕上公司去Windows化,有一大波web站點(diǎn)需要使用Node.js來(lái)搭建。公司本有一套通用框架,但暫時(shí)還不能開(kāi)源出來(lái)量承,自己也有很多想法不能在公司產(chǎn)品上實(shí)施,索性自己搞了一套開(kāi)源出來(lái),自己學(xué)習(xí)的同時(shí)也方便大家交流撕捍。

因?yàn)槠涓咝阅艿奶攸c(diǎn)拿穴,項(xiàng)目命名為:node-eagle

github地址:https://github.com/sqzhuyi/node-eagle

安裝:

npm install node-eagle  

依賴:

--Node8 (https://nodejs.org/en/
--Koa2 (https://www.npmjs.com/package/koa
--Mustache (https://www.npmjs.com/package/mustache

特點(diǎn):

--高性能:不借助任何緩存,i5單核CPU可達(dá)到5400的QPS
--route默認(rèn)走controller:name+action:name忧风,可自定義
--支持自動(dòng)render和手動(dòng)render:調(diào)用 this.render(viewName||viewPath||jsonData) 參數(shù)可選
--指定status后(非100)默色,自動(dòng)跳過(guò)后續(xù)代碼
--controller/action/view 不區(qū)分大小寫
--通過(guò) this.get(key) 獲取header/path/query/post參數(shù),不區(qū)分大小寫
--請(qǐng)求周期支持 onPreLoad/onPreRender/onRenderComplete 事件狮腿,可以掛在controller腿宰,也可以注冊(cè)到context,pre事件優(yōu)先取controller缘厢,complete事件優(yōu)先取context
--支持頁(yè)面緩存吃度,router配置中增加代碼:cache: function(ctx); 返回正整數(shù)則緩存,單位秒
--支持視圖模塊緩存贴硫,view文件添加標(biāo)簽:{% view cache="60" %} 單位秒
--內(nèi)容渲染默認(rèn)采用Mustache模板引擎规肴,支持自定義渲染函數(shù)(自然是不限制哪個(gè)引擎)
--頁(yè)面嵌套、引用手動(dòng)實(shí)現(xiàn)夜畴,支持常用語(yǔ)法:extends/include/block,如下:
_layout.html

<body>  
    {% include "./_header.html" %}  
    {% block body %}  
    <div>default content</div>  
    {% endblock %}  
    {% include "./_footer.html" %}  
</body>  

index.html

{% view cache="30" %}  
{% extends "../shared/_layout.html" %}  
{% block body %}  
<div class="body">  
    {{{ content }}}  
</div>  
{% endblock %}  

壓測(cè)結(jié)果截圖:


壓測(cè)結(jié)果截圖

使用:

1删壮、在Node啟動(dòng)文件中加入以下代碼:

const Koa = require("koa");  
const app = new Koa();  
const eagle = require("node-eagle");  
const config = require("./config");  
  
eagle(app, config);  
  
app.listen(config.port, config.host, function(){  
    console.log(`app start at ${config.host}:${config.port}`);  
});  

2贪绘、按照MVC規(guī)則創(chuàng)建站點(diǎn)文件,如下:

website  
├ controllers  
│  └ home.js  
├ views  
│  └ home  
│     └ index.html  
├ config.js  
└ route.js 

3央碟、最重要的是税灌,一定要看源碼中的Demo: https://github.com/sqzhuyi/node-eagle

作者:朱會(huì)震

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市亿虽,隨后出現(xiàn)的幾起案子菱涤,更是在濱河造成了極大的恐慌,老刑警劉巖洛勉,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粘秆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡收毫,警方通過(guò)查閱死者的電腦和手機(jī)攻走,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)此再,“玉大人昔搂,你說(shuō)我怎么就攤上這事∈淠矗” “怎么了摘符?”我有些...
    開(kāi)封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我逛裤,道長(zhǎng)瘩绒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任别凹,我火速辦了婚禮草讶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炉菲。我一直安慰自己堕战,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布拍霜。 她就那樣靜靜地躺著嘱丢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祠饺。 梳的紋絲不亂的頭發(fā)上越驻,一...
    開(kāi)封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音道偷,去河邊找鬼缀旁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勺鸦,可吹牛的內(nèi)容都是我干的并巍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼换途,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼懊渡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起军拟,我...
    開(kāi)封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剃执,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后懈息,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肾档,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年漓拾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阁最。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骇两,死狀恐怖速种,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情低千,我是刑警寧澤配阵,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布馏颂,位于F島的核電站,受9級(jí)特大地震影響棋傍,放射性物質(zhì)發(fā)生泄漏救拉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一瘫拣、第九天 我趴在偏房一處隱蔽的房頂上張望亿絮。 院中可真熱鬧,春花似錦麸拄、人聲如沸派昧。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蒂萎。三九已至,卻和暖如春淮椰,著一層夾襖步出監(jiān)牢的瞬間五慈,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工主穗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泻拦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓忽媒,卻偏偏與公主長(zhǎng)得像聪轿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猾浦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,434評(píng)論 2 45
  • 酷暑來(lái)襲 空調(diào)灯抛、冰箱金赦、電風(fēng)扇、熱水器等等 這些都是要用到電的節(jié)奏 1对嚼、冰箱的擺放位置要正確 冰箱應(yīng)放置在陰涼通風(fēng)口...
    0a911c2e79ad閱讀 216評(píng)論 0 0
  • 前面介紹了大公司的窘境纵竖,被小公司打敗的案例漠烧,小公司成為大公司后又被另一家小公司打敗,好像進(jìn)了怪圈靡砌,再也出不來(lái)...
    a242022b9660閱讀 732評(píng)論 0 0
  • 晚睡 把泥土灑滿天空 開(kāi)始培育自己的星夜 將每一只白玫瑰摟入懷里 向徒勞的目的地投降 不等到船只靠岸 便重回起點(diǎn)調(diào)...
    希臘智術(shù)史閱讀 255評(píng)論 1 5