——JavaScript Generated
install
参数,用于初始化MongoDB数据库;gulp
命令编译本地运行文件,gulp build
编译 CDN 运行文件,其中 CDN 可在 package.json
中定义。v0.7.7版 升级了账号密码系统,v0.7.6及之前的版本升级后需更新数据库,请运行 node app.js update-passwd
JsGen是用纯JavaScript编写的新一代开源社区网站系统,主要用于搭建SNS类型的专业社区,对客户端AngularJS应用稍作修改也可变成多用户博客系统、论坛或者CMS内容管理系统。
jsGen基于NodeJS编写服务器端程序,提供静态文件响应和REST API接口服务。基于AngularJS编写浏览器端应用,构建交互式网页UI视图。基于MongoDB编写数据存储系统。
系统需要Node.js 0.10.x和mongoDB 2.4.x Windows环境需要Python2.7和VS2012(用于编译node-gyp及其它需要编译的Node.js插件)
Dependencies: Node.js 0.10.x, redis 2.6.12, mongoDB 2.4.x. Windows: Python2.7 and VS2012
config目录下的config.js配置jsGen运行参数,包括监听端口、数据库等,内有说明。
api目录下的install.js是jsGen运行初始化文件,设置管理员初始密码,邮箱,内有说明。
git clone git://github.com/zensh/jsgen.git
cd jsgen
npm install node-gyp //windows需要先运行此命令,linux不需要
//此命令依赖python和vs2012,请参考 https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup
npm install //npm安装依赖模块,请确保依赖模块全部安装好。
//windows下请运行 npm install --msvs_version=2012
node app.js install //启动jsGen之前,初始化MongoDB数据库
node app.js [recache] //正式启动,可选参数 `recache`,启动时重建redis缓存
npm start //正常启动,或 `node app.js`
浏览器端输入网址http://localhost/即可访问。
默认的管理员用户名: admin 密码: admin@jsgen.org。
Default administrator username: admin password: admin@jsgen.org.
git pull origin //更新jsGen
npm update //更新Node.js模块
genTooltip
指令收集并提示无效输入,配合uiValidate
可对输入完成任何自定义验证。主要应用于用户登录、用户注册、用户信息修改、发表文章、发表评论,管理后台配置等。genModal
指令和union/intersect
函数实现,在发表/编辑文章页面、用户信息配置页面、后台管理页面等修改了数据时,若未保存离开,提示警告信息。genPagination
指令,效果仿Github,可实现有链接和无链接分页导航。前者生成url,可产生导航记录(浏览器前进后退),具体效果见文章列表。后者通过事件机制实现,不改变url,无导航记录(不能前进后退),具体效果见文章详情页面中的评论分页导航。genSrc
指令,目前主要用于用户头像。jsGen使用Gavatar,再用户的Gavatar没用加载完成之前,显示本地服务器的占位图像,加载完成后自动替换成用户头像。timing
,自动定位页面元素的anchorScroll
(动画效果,方便好使,取代AngularJS内置的$anchorScroll),无须担心digest错误的applyFn
(代替$apply),通用的Cookies存储服务myConf
等+api // 服务器端API目录
-article.js // 文章和评论系统API接口
-collection.js // 合集系统API接口
-index.js // 网站全局信息API接口
-install.js // 初始化安装程序
-message.js // 站内信息系统API接口
-tag.js // 标签系统API接口
-user.js // 用户系统API
+config
-config.js // 网站配置文件
+dao // MongoDB数据库访问层
-articleDao.js // 文章评论访问接口
-collectionDao.js // 合集系统访问接口
-indexDao.js // 网站全局信息访问接口
-messageDao.js // 站内信息系统访问接口
-mongoDao.js // MongoDB访问接口
-tagDao.js // 标签系统访问接口
-userDao.js // 用户系统访问接口
+lib // 通用工具模块
-anyBaseConverter.js // 通用进制转换器
-cacheLRU.js // LRU缓存模块
-cacheTL.js // TL缓存模块
-email.js // SMTP Email模块
-json.js // 数据库格式模板
-msg.js // 程序信息
-tools.js // 核心工具函数
+mylogs // 日志目录,网站运行后产生内容
+node_modules // Node.js模块目录,npm install后产生内容
+static // 浏览器端AngularJS WEB应用
+css
+font-awesome //很酷的web icon
+img
+js
+lib // AngularJS、jQuery等js模块
-app.js // 全局初始化模块
-controllers.js // 控制器模块
-directives.js // 指令模块
-filters.js // 过滤器模块
-locale_zh-cn.js// 语言包
-router.js // 路由模块
-services.js // 通用服务模块
-tools.js // 工具函数模块
+md // MarkDown文档
+tpl // html模板
-favicon.ico
-index.html // AngularJS WEB应用入口文件
+tmp // 缓存目录
+static // 压缩js、css缓存目录,必须
+tpl // html模板文件缓存目录
+upload // 上传文件缓存目录
-app.js // Node.js入口文件
-package.json // jsGen信息文件
前沿的WEB技术,前所未有的网站构架形态,前端与后端完全分离,前端由 AngularJS 生成视图,后端由 Node.js 提供REST API数据接口和静态文件服务。只需改动前端AngularJS应用视图形态,即可变成论坛、多用户博客、内容管理系统等。
用户数据、文章评论数据、标签数据、分页缓存数据、用户操作间隔限时等都使用 LRU缓存 ,降低数据库IO操作,同时保证同步更新数据。
前后端利用 json 数据包进行通信。文章、评论采用 Markdown 格式编辑、存储,支持GitHub的GFM,AngularJS应用将Markdown解析成HTML DOM。
用户帐号系统,关注(follow)用户/粉丝、邮箱验证激活、邮箱重置密码、SHA256加密安全登录、登录失败5次锁定/邮箱解锁、用户标签、用户积分、用户权限等级、用户阅读时间线等功能。用户主页只展现感兴趣的最新文章(关注标签、关注作者的文章)。
文章/评论系统,文章、评论使用统一数据结构,均可被评论、支持、反对、标记(mark,即收藏),当评论达到一定条件(精彩评论)可自动提升为文章(进入文章列表展现,类branch功能),同样文章达到一定条件即可自动推荐。自动实时统计文章、评论热度,自动生成最新文章列表、一周内最热文章列表、一周内最热评论列表、最近更新文章列表。强大的文章、评论列表分页导航功能,缓存每个用户的分页导航浏览记录。
标签系统,文章和用户均可加标签,可设置文章、用户标签数量上限。用户通过标签设置自己关注话题,文章通过标签形成分类。标签在用户设置标签或文章设置标签时自动生成。自动展现热门标签。
文章合集系统,作者、编辑、管理员可将一系列相关文章组成合集,形成有章节大纲目录的在线电子书形态,可用于教程文档、主题合集甚至小说连载等。(待完成)
站内短信系统,提供在文章、评论中 @用户的功能,重要短信发送邮件通知功能等。(待完成)
后台管理系统,网站参数设置、缓存设置、网站运行信息、文章、评论、用户、标签、合集、站内短信等管理。
Robot SEO系统,由于AngularJS网页内容在客户端动态生成,对搜索引擎robot天生免疫。jsGen针对robot访问,在服务器端动态生成robot专属html页面。搜索引擎Robot名称可在管理后台添加。
jsGen 是为AngularJS中文社区开发的网站系统,测试版已经上线,还请大家温柔测试,积极反馈Bug。
非常感谢GitHub和在GitHub上贡献开源代码的Node.js、AngularJS、MongoDB、Bootstrap以及其他JavsScript插件的伟大码农们,还有国内码农贡献的rrestjs、mongoskin、xss等。jsGen也是开源免费。