趕上公司去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é)果截圖:
使用:
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ì)震