本文來自nodejs論壇:www.tnodejs.com
一、針對幾個很好的建議,我把該架構進行了進一步的修改!
兩個好的建議主要是來自cnodejs.org
1、關於讀取設定檔,降低效率的問題
使用者名稱:kamaliang
建議:每次請求時都要對router.json進行readFileSync?這個沒必要吧?
解釋:這樣會影響系統的效率,如何避免這個問題呢?我採用的方法是通過使用一個靜態全域變數,第一次需要讀取設定檔,第二次就直接從全域變數擷取!
針對該問題做了一個全域的靜態命名空間,如下代碼:
複製代碼
/**初始變數,主要是初始一些靜態變數*/global.initVar = { routerConfig : "", errorConfig : "", serverConfig : ""}
2、global下註冊了多個變數的問題
使用者名稱:kfll
建議:在global下註冊那麼多名字合適麼.... 還是註冊個命名空間吧.. global.xxxxApp = {}
解釋:避免本檔案的命令空間變數和global的變數衝突,同時便於系統化管理與配置。
以上兩個建議非常好,感謝他們提出的問題!
針對該建議註冊了命名空間,如代碼:
/*** modules引入*/global.Module = { express : require('express'), sio : require('socket.io'), fs : require('fs'), path : require('path'), url : require('url'), parseCookie : require('connect').utils.parseCookie, MemoryStore : require('./node_modules/connect/lib/middleware/session/memory'), Session : require('./node_modules/connect/lib/middleware/session/session'), sys : require('util')}/**初始變數,主要是初始一些靜態變數*/global.initVar = { routerConfig : "", errorConfig : "", serverConfig : ""}
二、新增功能
新增log日誌列印功能,當然這個nodejs有一套api可以提供實現log記錄,不過這裡我自我設計了一個架構介面,其主要功能是:記錄多種log日誌(錯誤、警告、流水),同時根據自我的需要設定錯誤碼,錯誤資訊,同時設定錯誤層級。主要是便於系統的維護和監控。
提供的檔案名稱:(在core檔案夾下)log.js
Module名中exports的函數名:addLog
參數
errorCode : 錯誤碼
myErrorMsg : 錯誤資訊
errorJson : 記錄相應的資料
日誌記錄格式
[20:25:44] [1] [can not connect to mysql database] [ClientConnectionReady Error: ]
分別是:時間、錯誤層級、錯誤配置資訊、錯誤碼資訊(相應記錄資料未添加)
實現方法:使用fs模組進行檔案管理
本功能設計的api有readFileSync,lstat,writeFile,createWriteStream
該功能有待完善加提高效率!
readFileSync同步讀取檔案內容
lstat查詢是否有該檔案存在
createWriteStream建立一個檔案
writeFile重寫一個檔案
請教的問題:nodejs有沒有提供是不重寫檔案的api,writeFile是重寫檔案的,因此我每次需要去讀取檔案資訊,然後重新寫進去,會導致效率下降!
源碼:https://github.com/tnodejs/myweb-nodejs