jsGen - 純JavaScript編寫的新一代開源社區網站系統
jsGen是用純JavaScript編寫的新一代開源社區網站系統,主要用于搭建SNS類型的專業社區,對客戶端AngularJS應用稍作修改也可變成多用戶博客系統、論壇或者CMS內容管理系統。
jsGen基于NodeJS編寫服務器端程序,提供靜態文件響應和REST API接口服務;基于AngularJS編寫瀏覽器端應用,構建交互式網頁UI視圖;基于MongoDB編寫數據存儲系統。
jsGen基本原理:客戶端瀏覽器發起訪問請求后,NodeJS服務器先響應由AngularJS編寫的Web應用,這個應用是由html模板、 js和css靜態文件組成。客戶端獲取到AngularJS應用后,再由AngularJS與后臺的NodeJS服務器API接口通信,根據用戶請求交換 數據,這些數據是純粹json數據包,AngularJS獲取到json數據包后再編譯成相關頁面展現給用戶。因此,用戶進入網站時,只需在首次載入視圖 模板(html、js、css),其后的所有請求都是純json數據交換,不再包含html代碼,大大減少了數據流量。
特點:
-
前沿的WEB技術,前所未有的網站構架形態,前端與后端完全分離,前端由 AngularJS 生成視圖,后端由 Node.js 提供REST API數據接口和靜態文件服務。只需改動前端AngularJS應用形態,即可變成論壇、多用戶博客、內容管理系統等。
-
用戶數據、文章評論數據、標簽數據、分頁緩存數據、用戶操作間隔限時等都使用 LRU緩存 ,降低數據庫IO操作,同時保證同步更新數據。
-
前后端利用 json 數據包進行數據通信。文章、評論采用 Markdown 格式編輯、存儲,支持GitHub的GFM(GitHub Flavored Markdown),Markdown解析成HTML DOM并進行 XSS攻擊 過濾由前端AngularJS應用完成。
-
用戶帳號系統,關注(follow)用戶/粉絲、郵箱驗證激活、郵箱重置密碼、SHA256加密安全登錄、登錄失敗5次鎖定/郵箱解鎖、用戶標簽、用戶積分、用戶權限等級、用戶閱讀時間線等功能。用戶首頁展現用戶關注標簽、關注作者的相關的文章(即用戶感興趣的文章)。
-
文章/評論系統,文章、評論使用統一數據結構,均可被評論、支持、反對、標記(mark,即收藏),當 評論達到一定條件(精彩評論)可自動提升為文章(獨立出來,類branch功能),同樣文章達到一定條件即可自動推薦。自動實時統計文章、評論熱度,自動 生成最新文章列表、一周內最熱文章列表、一周內最熱評論列表、最近更新文章列表。強大的文章、評論列表分頁導航功能,緩存每個用戶的分頁導航瀏覽記錄。
-
標簽系統,文章和用戶均可加標簽,可設置文章、用戶標簽數量上限。用戶通過標簽設置自己關注話題,文章通過標簽形成分類。標簽在用戶編輯個人信息或編輯文章時自動生成,自動管理,也可管理員后臺管理。自動展現熱門標簽。
-
文章合集系統,作者、編輯、管理員可將一系列相關文章組成合集,形成有章節大綱目錄的電子書形態。教程文檔、主題合集甚至小說連載等均可由合集系統形成。(待完成)
-
站內短信系統,提供在文章、評論中 @用戶的功能,重要短信發送郵件通知功能等。(待完成)
-
后臺管理系統,網站參數設置、緩存設置、網站運行信息、文章、評論、用戶、標簽、合集、站內短信等管理。
-
Robot SEO系統,由于AngularJS網頁內容在客戶端動態生成,對搜索引擎robot天生免疫。jsGen針對robot訪問,在服務器端動態生成robot專屬html頁面。搜索引擎Robot名稱可在管理后臺添加。
說明
jsGen 是為AngularJS中文社區開發的網站系統,測試版已經上線,還請大家溫柔測試,積極反饋Bug。
在移動互聯網爆炸式發展、webOS類系統(谷歌ChromeOS、火狐OS等)進入實用階段、TV機頂盒應用即將爆發等大環境大趨勢下,JavaScript無疑將成為WEB中最重要的開發語言,深入學習JavaScript勢在必行。
AngularJS中文社區改版之后,致力于形成一個以AngularJS為主,WEB相關的各種JavaScript技術并行學習討論交流的專業技術社區,我本人會將開發jsGen的經驗心得形成文字與大家分享。
同時也因為我是半路轉行的新手,jsGen是我邊學邊寫的第一個編程作業。jsGen表現形式參考了Node.js中文社區,但核心構架完全自我設計,未經驗證!測試版上線無疑將出現各種問題,希望大家能積極評測反饋。jsGen代碼將會持續優化,并完善相關代碼解釋說明文檔。對于JS新手來說,這也許是個好的學習實例。