本文首先從sails的安裝講起接下來介紹node.js與Sails的日誌機制,小夥伴們已經迫不及待要看下文了吧,好吧。
Sails是一個Node.js的中間件架構,幫助我們很方便的構建WEB應用程序,網址:http://www.sailsjs.org/,它主要是在Express框架的基礎上發展起來的,擴充了新的功能元件,下面我們來看看安裝方法
一 安裝Sails
npm -g install sails
二 建立一個Sails的專案
sails new testProject
三 啟動專案
cd testProject
sails lift
四 專案的結構,基於MVC理念
我們可以看到它與是由model,view,controller組成,它們之間的呼叫關係與.net mvc十分類似,只不過.net mvc裡的model主要是指viewmodel,而在sails裡model主要是資料模型,即.net裡的Entity,它是資料表的一種抽象,對於資料的持久化,sails提供了很多種,如本地文件,mysql,mongodb,redis等,對於sqlserver我們也可以找到第三方的組件。
五 透過controller的action來渲染視圖
我們在.net mvc裡,大家都知道視圖是透過action的render方法來渲染的,其時sails也是這樣的,可以使用原生的render,也可以使用封裝好的view方法,而在視圖上直接使用你的action回傳的物件即可。
controller/action的內容
module.exports={ index: function (req, res){ return res.view("test/index",{title:"大叔",engTitle:"Lind"}); //return res.view("view_name",data)//view_name参数为空表示用当前的action } };
view-ejs的內容
從action傳回的物件-title:
從action傳回的物件-engTitle:
呼叫的結果如下
如果進入index頁面可以直接寫控制器名稱
如果其它action希望走/test這樣的路由,需要在config/route.js裡進行配置,如為add這個action添加路由為/user,它的設定如
'get /user': {view: 'user/add',locals: {layout: null}},
'get /test':{view:'test/index',locals:{layout:null}}
好了,到這樣一個最簡單的MVC的DEMO就做好了,下一節我們將引用Model,即資料持久化的機制,進行對資料表的curd操作,敬請期待...
ps:Node.js與Sails~日誌機制
看到Sails的日誌就會想起來log4net,確實它們在很多地方是相似的,都是採用分級記錄的方式,而sails我覺得在使用上更加方便,它不需要我們做多於的事情,直接sails.log.級別("你的日誌內容")就搞定了,你不需要關心什麼單例,或者持久化方式,Sails的日誌只是對console.log的一種補充,可以理解為分了類別之後的console.log,並有顏色的區分,呵呵。
一 我們來看看sails.log的日誌等級
優先 | 等級 | 日誌 fns 可見 |
---|---|---|
0 | 沉默 | 不適用 |
1 | 錯誤 | <font face="NSimsun">.error()</font> |
2 | 警告 |
<font face="NSimsun">.warn()</font> , <font face="NSimsun">.error()</font>
|
3 | 調試 |
<font face="NSimsun">.debug()</font> , <font face="NSimsun">.warn()</font> , <font face="NSimsun">.error()</font>
|
4 | 訊息 |
<font face="NSimsun">.info()</font> , <font face="NSimsun">.debug()</font> , <font face="NSimsun">.warn()</font> , <font face="NSimsun">.error()</font>
|
5 | 詳細 |
<font face="NSimsun">.verbose()</font> , <font face="NSimsun">.info()</font> , <font face="NSimsun">.debug()</font> , <font face="NSimsun">.warn()</font> 、 <font face="NSimsun">.error()</font>
|
6 | silly |
<font face="NSimsun">.silly()</font> , <font face="NSimsun">.verbose()</font> , <font face="NSimsun">.info()</font> , <font face="NSimsun">.debug()</font> ,<font face="NSimsun">.warn()</font>
<font face="NSimsun">.error()</font>
|
sails.log('debug日誌!');//sails.log.debug("debug") sails.log.error('error日誌!'); sails.log.warn('warn日誌!','request aborted.');
sails.log.info('info日誌!');
sails.log.verbose('verbose日誌!');
sails.log.silly('silly日誌!');
三 設定項目的日誌級別,位於config/log.js
module.exports.log = { level: 'info' };
四 從結果看到,日誌記錄時,只記錄比目前配置等級低的日誌內容
怎麼樣,sails的日誌蠻方便吧!