代码https://github.com/Swiftam/book-node-mongodb-backbone
一个基本可用的社交网站让用户能够安全地认证、管理联系人、聊天,并查看实时更新。
前端和后端两个互补的MVC系统。
1、目录结构
分Node.js和Backbone.js
2、包定义
package.json
{
"name": "my-social-network",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "~3.0.0",
"jade": ">= 0.0.1",
"mongoose": ">= 2.6.5",
"nodemailer": "0.3.20",
"connect": ">= 1.9.1",
"socket.io": "~0.9",
"cookie": "0.0.4"
}
}
3、网站服务器
|____config
| |____mail.example.js
|____public
| |____images
| | |____trafficlight.png
| |____js
| | |____boot.js
| | |____SocialNetSockets.js
| | |____router.js
| | |____SocialNetView.js
| | |____views
| | | |____chat.js
| | | |____chatsession.js
| | | |____contacts.js
| | | |____contact.js
| | | |____login.js
| | | |____forgotpassword.js
| | | |____register.js
| | | |____chatitem.js
| | | |____addcontact.js
| | | |____status.js
| | | |____profile.js
| | | |____index.js
| | |____SocialNet.js
| | |____models
| | | |____ContactCollection.js
| | | |____Contact.js
| | | |____StatusCollection.js
| | | |____Account.js
| | | |____Status.js
| | |____libs
| | | |____backbone.js
| | | |____text.js
| | | |____require.js
| | | |____jquery.js
| | | |____underscore.js
| |____templates
| | |____chatsession.html
| | |____contact.html
| | |____index.html
| | |____chatitem.html
| | |____forgotpassword.html
| | |____login.html
| | |____addcontact.html
| | |____profile.html
| | |____status.html
| | |____chat.html
| | |____contacts.html
| | |____register.html
| |____styles
| | |____styles.css
|____app.js
|____views
| |____resetPasswordSuccess.jade
| |____resetPassword.jade
| |____layout.jade
| |____index.jade
|____snippets
| |____login_connect.js
| |____account_contact.js
| |____README.md
| |____express_status.js
| |____event_login.js
| |____login_disconnect.js
| |____event_logout.js
|____package.json
|____routes
| |____chat.js
| |____authentication.js
| |____accounts.js
|____models
| |____Account.js
4、认证
访问任何功能之前,需证明有权执行这项功能。
账户:数据库字段包含email地址、口令、名字、图片、描述和简介。models/Account.js
路由:视图与视图之间的导航。Backbone.js中Router类。如http://localhost:8080/#register。public/js/router.js
身份验证:用户可能有两种状态:已通过验证和未经验证。需向Node后端发一个AJAX请求。验证当前由请求标头中的会话ID标识的会话,并将其与有效的访问令牌联系起来。
通过检查session.loggedIn属性
注册:用户姓名、电子邮件和口令。public/templates/register.html
登录:授权访问。界面和处理程序
忘记口令:模板和视图类
重置口令:
整合:
5、用户界面
账户明细:用户自己查看并可修改,其他人可添加为好友
联系人列表:
活动流:类似你的主页,突出联系人账户明细的变更。
数据模型:非常关键
整合:
6、交朋友
联系人列表:显示每个关系的最新和最顶层的信息,也提供一种方法来寻找新的联系人。
添加联系人:能查看好友部分或完整信息。
删除联系人:从双方的联系人列表中删除。
评论:为你的联系人资料添加评论
整合:
7、聊天
尽可能快地将一方的信息传递给另一方,不会让其他影响交流,如记录日志或数据库检索。
重构:
连接到聊天服务器:发信息之前,需要认证和连接。Web socket在认证成功之后,就不再需要验证用户了。需加入socket.io和cookie库。
发送和接收聊天消息:事件socket:char:start和socket:chat:in。如果接收到聊天消息,所有感兴趣的观察者就会知道他们需要开启一个session,并处理进入的消息。
整合:
8、实时互动
增加自定义事件:
联系人登录通知:
状态更新:
整合: