源代碼下載地址:http://download.csdn.net/detail/guoyongrong/6498611
這個系統其實是出於學習nodejs的目的而改寫的系統。
原來的系統前端使用了extjs4.2.1,后端使用了PHP5.4和ZEND框架開發,后台數據庫是用mongodb2.2.2。
我抽離出了原來系統中的賬戶管理,角色管理,菜單管理,權限管理這4個部分,
我想這4個部分,基本上所有的系統都會用到。具有一定的普遍性。所以將這4個部分用nodejs重新改寫了。
該系統目前使用模塊有express,ejs,connect-mongo,mongodb,express-partials,connect-flash,fibers,wind等
其實wind模塊這次系統中沒有使用。可以將它排除出去。我是出於學習wind的目的,才加入這個模塊的。
本來准備使用wind模塊,是為了實現同步的目的,由於后來改用了fibers模塊之后,就沒有使用它。這里說明一下
不是fibers要比wind好,而是我暫時不能理解wind,或則是說對wind的研究不夠吧。
眾所周知nodejs是推崇異步模式。但是這個系統是從php過來的,而php的代碼是同步模式的寫法,所以為了在改寫的過程中
希望 1是代碼改動最少 2是同步寫法更加適合思維習慣。而且代碼可讀性高的目的,用到了fibers。
這個系統的源代碼中有些js文件里保留了一些原來的PHP代碼,這是出於代碼對比的目的。
是讓大家了解原來的php代碼是怎么實現的,用nodejs之后是如何改寫的。通過對比,大家會發現
其實通過使用fibers之后,幾乎兩者是一模一樣的。
還有源代碼中還保留了一些被注釋掉的函數,有些是用到了wind,有些是用到了fibers,有些是直接異步的寫法。
這些內容都是在開發過程中我不斷嘗試后的產物。我花了1周的時間才實現了一個遞歸的調用,而且還是同步的方式。
到目前為止,我還不能理解在異步模式下實現遞歸調用函數。比如說源代碼中有個函數getMenuTree,菜單下面可能有子菜單,
子菜單的下面可能還有菜單。所以是一個遞歸的過程。我現在是同步的寫法實現了這個函數,如果有人能夠提供異步寫法實現的遞歸函數並
emai給我,我不勝榮幸。
handsomegyr@126.com
郭永榮
在使用本系統之前,必須要安裝nodejs 0.10.10,mongodb2.2.2,python2.7.5至於安裝的方法請googel解決。
將源代碼下載之后,解壓到某個目錄下,比如說d:\nodejs\umav4simple目錄。
進入到那個目錄,
a)運行以下命令
npm install express
npm install ejs
npm install connect-mongo
npm install mongodb
npm install express-partials
npm install connect-flash
npm install fibers
npm install wind
盡管在源代碼中已包含了這些模塊,但是最好還是要重新運行一遍。
因為有些模塊可能需要重新的編譯。
比如說fibers模塊,我在window下運行npm install fibers的時候編譯了一個win32-ia32-v8-3.14
而在linux下重新編譯了linux-ia32-v8-3.14。所以說根據操作系統的不同,可能會有一些不同。
以免造成想不到的錯誤。
b)打開settings.js,並且將你的mongodb的設置改寫並保存。
c)運行node app.js或則node cluster.js
如果沒有提示錯誤的話,那么就說明環境配置成功了。
d)通過以下的URL可以在mongodb中追加一些數據,不過只能運行一次。否則會重復追加數據。
瀏覽器上輸入 http://localhost:3000/admin/index/install
做完之后,
瀏覽器上輸入http://localhost:3000/
就通過用戶名admin 密碼adminadmin進行登錄,並使用這個系統了。
如果有問題的話,請聯系我
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下是學習的資料,如果你有一些好的學習資料推薦也請聯系我
http://nodejs.org/
http://blog.fens.me/nodejs-express3/
https://github.com/joyent/node
http://windjs.org/cn/
http://xcoder.in/blog/2013/03/nodejs-mongodb-sync.xhtml
https://github.com/XadillaX/SevenzJS/blob/a0a0476000c492dd8e70c062cfa432f559edbd16/sevenz/sMongoSync.js
https://github.com/XadillaX/SevenzJS/blob/a0a0476000c492dd8e70c062cfa432f559edbd16/actions/index.js
http://express.jsbin.cn/api.html
http://nodejsapi.cloudfoundry.com/