一直想做个相对完整的项目来演示下Jscex的使用,可惜缺少创意和精力,一直没能实现。前几天看到Node Club将其网站开源了,不禁让我十分欢喜。Node Club网站是个真实案例,复杂度适中,既是Jscex的典型使用场景,又能避开我不擅长的网页样式设计和制作,简直是一个再合适不过的基础样板了。周末我大致看了下代码,也试着将几个部分使用Jscex改进了一下,效果也十分显著,于是打算写作一个系列指引,希望可以对Jscex类库的推广有所帮助。在此第一篇,自然是最基本的环境建设开始说起。
配置系统环境
首先,我强烈建议您可以在GitHub上Fork一下Node Club网站的项目,有个版本管理环境做后盾,做什么都会放心许多。我也将所有修改存放在GitHub上,其master分支是我个人不断改进的版本,您可以时刻关注其最新发展。除此之外,我还创建了一个tutorial分支,专门为这个系列文章存放代码,保持两者进度一致,同时尽量将修改过程和版本提交对应起来。
要运行Node Code,首先您得安装必要的环境:
无论您使用的是Windows,Linux还是OS X,以上都有对应的安装方式,在此就不详细描述了。文章中会出现一些控制台脚本,是我在OS X上运行的命令和结果。如果没有特殊说明,则路径是nodeclub项目的根目录。如果你使用的是Windows,则需要进行一些修改,其实最常见的修改就是分割路径的斜线还有可执行文件的使用。
这里假设您对以上三个工具,最好还包括Git有了一定了解。其实目前也无需十分熟悉,看看官方文档,搜几篇文章瞅瞅,就应该差不多了。
配置Node Club环境
假设您已经下载了Node Club代码(当然最好您是git clone一份自己fork出来项目),并将其解压缩至nodeclub目录中。现在您应该可以使用npm install命令安装所有依赖的包:
$ npm install
eventproxy[@0](/user/0).1.0 ./node_modules/eventproxy
ejs[@0](/user/0).5.0 ./node_modules/ejs
validator[@0](/user/0).3.7 ./node_modules/validator
node-markdown[@0](/user/0).1.0 ./node_modules/node-markdown
mongoose[@2](/user/2).4.1 ./node_modules/mongoose
├── colors[@0](/user/0).5.1
├── hooks[@0](/user/0).1.9
└── mongodb[@0](/user/0).9.7-1.4
express[@2](/user/2).5.1 ./node_modules/express
├── mime[@1](/user/1).2.5
├── qs[@0](/user/0).4.2
├── mkdirp[@0](/user/0).0.7
└── connect[@1](/user/1).8.5
nodemailer[@0](/user/0).3.1 ./node_modules/nodemailer
├── mailcomposer[@0](/user/0).1.4 (mimelib-noiconv[@0](/user/0).1.6)
└── simplesmtp[@0](/user/0).1.12
要运行网站,则还需要准备一份配置文件。您可以将config.default.js复制一份至config.js文件,并建议修改一下一些配置:
exports.config = {
// 网站端口号,默认为80,可能会有冲突,建议改成其他值
port: 8080,
// 发系统邮件时使用的用户名
mail_user: 'xxxxx[@gmail](/user/gmail).com',
// 发系统邮件时使用的密码
mail_pass: 'xxxxx',
// SMTP服务器地址
mail_host: 'smtp.gmail.com',
// 系统邮件发信人
mail_sender: 'xxxxx[@gmail](/user/gmail).com',
// 根据需求配置是否验证
mail_use_authentication: true,
};
其中大部分的设置是在配置系统邮件的SMTP服务器,您可以像我一样使用Gmail,或是跟Node Club原项目一样使用126的邮箱。
运行Node Club网站
要运行Node Club网站,则需要启动MongoDB数据库,例如:
mongodb-osx-x86_64-2.0.2/bin$ mkdir data
mongodb-osx-x86_64-2.0.2/bin$ ./mongodb --dbpath data
此时您就在本地启动了一个MongoDB进程,使用默认端口27017,这与网站的默认配置相符。此时您就可以执行app.js来启动网站:
$ node app.js
NodeClub listening on port 8080 in development mode
God bless love....
在浏览器里访问http://127.0.0.1:8080,您应该就能看到一个空白的Node Club站点:
此时您可以点击右上角的“注册”链接,注册一个名为admin的用户,部分操作(例如标签管理)需要使用该账号才能进行。注册时会要求填一个邮箱,提交后会收到一封激活邮件,但其中的链接可能不能直接访问(遗漏了端口号,应该是个bug),您可以将其地址复制到浏览器里修改并访问。激活成功后便可登录,登陆后会进入空白的后台页面:
至此万事俱备,任何时候您想重启Node Club网站,只需ctrl+c中断node app.js命令再重新运行即可。从下一篇文章开始,我们将正式开始Jscex之旅。
相关文章
- 使用Jscex改进Node Club(1):运行Node Club网站
激活端口问题 在controllers/mail.js里面给send_active_mail send_reset_pass_mail里面都增加这么一段
if (typeof config.port != 'undefined') {
var serverport = 80;
}
else {
var serverport = config.port;
}
然后再相应的config.host后面增加
+ ":" + serverport
就可以收到正确的激活和密码重置邮件
为了自己测试方便 索性把发邮件这档子事情给绕过去 改一下controllers/sign.js
mail_ctrl.send_active_mail(email,md5(email+config.session_secret),name,email,function(err,success){
if(success){
res.render('sign/signup', {success:'欢迎加入 ' + config.name + '!我们已给您的注册邮箱发送了一封邮件,请点击里面的链接来激活您的帐号。'});
return;
}
});
注释掉 改成
res.render('sign/signup', {success:'欢迎加入 ' + config.name + '!激活地址为:' + config.host + ":" + config.port + '/active_account?key=' + md5(email+config.session_secret) + '&name=' + name + '&email=' + encodeURIComponent(email)});
return;
那么就能直接得到激活地址了