一个问答网站.
登录注册身份验证
提问
回答
修改个人资料
对回答点赞或反对
问题添加标签
关注其他用户
......
#界面预览
粒子化
下雪
#技术栈
- Node.js
- Expree.js
- MongoDB
- jQuery
- Pug(Jade)
#技术选型的理由
- 为什么Express.js(...Node.js) ?
- 很火,社区庞大,体系成熟.而且作为前端er,这不是第一选择吗?
- 为什么jQuery ?
- 考虑直接上Vue.js 但是毕竟Express.js才开始学,Vue.js也刚过了一边文档,跟着敲了敲例子,没什么实战经验。不想两面受敌。等项目完工的差不多的时候,再考虑用Vue全家桶重构一遍前端部分。
- 为什么Pug(Jade) ?
- 官方推荐的不说,之前为Hexo写主题的时候用的就是它:简洁,缩进党(Pythoner表示很亲切)。只是模板而已......不值得纠结太多。
- 为什么MongoDB ?
- 已经了解了MySQL这种“关系型数据库管理系统”,还不会NoSQL,所以就趁这次机会学习一门NoSQL,感受一下两种不同的数据库系统的区别.而且前端er表示很亲切.
#本地运行
前提条件: 安装好node.js(npm 会同时被安装好)、安装好mongoDB并运行服务)
git clone https://github.com/shuirong/Ask-Answer.git
cd Ask-Answer
npm install
node ./bin/www
浏览器打开 127.0.0.1:3000
#项目日程(待完成)
- 修改代码,防御
XSS
CSRF
攻击(难点:4颗星) - 时间方面有些问题,时间本来好好的,存到数据库里就差了好几个小时,看样子是个坑.(难点:1颗星)
- 关注其他用户(难点:1颗星)
- 回答的其他排序方式(难点:1颗星)
- 主页的回答按钮,跳到根据多个标签进行搜索的页面(难点:1颗星)
- 导航栏的搜索功能,搜索问题(难点:4颗星)
- 登出按钮,删除cookie信息(难点:1颗星)
- 登录的帐户信息前端验证.邮箱注册/手机短信注册(难点:5颗星)
- 登录页检测cookie信息,来决定是否需要输入帐号密码(难点:2颗星)
- 添加特定标签页面,展示包含此标签的所有热门问题,和最新问题.(转换通过最新/最热按钮实现),相关样式(难点:3颗星)
- ...
#更新日志(已完成)
- 2016-3-26: 把和头像相关的代码都用Async重写了一遍,可以更好地异步获取最新的头像信息.
- 2016-3-25: 把用户会话放在服务端(生产环境是内存),把生成的sessionId放在cookie里.cookie里也有个user字段.此字段仅在页面header等展示用,并不被后端信任,也就是不会在进行用户数据交互时使用.
- 2016-3-21: 登录注册页的背景特效(粒子化)(两套特效加载时随机一个)
- 2016-3-20: 用户上传图片作为头像
- 2016-3-17: 问题主页里的所有回答的排序方式,默认为根据点赞数排序
- 2017-3-17: 回答/修改支持markdown语法
- 2017-3-7 : 回答点赞,一个回答,用户只能点赞/反对一次.而且刷新页面,点赞/反对标识仍然保留.
- 2017-3-6 : 添加后端接口,接受编辑的个人信息,保存到数据库.
- 2017-3-6 : 个人主页的个人信息的编辑功能,然后传给后端.(除了上传图片)
- 2017-3-6 : 一个问题,一个用户只能回答一次
- 2017-3-5 : 继续完善用户主页的信息编辑样式及前后端代码.登录注册页面的样式,及一点特殊效果
- 2017-3-3 : 修改后端获取问题数据的接口,并根据请求参数的不同,在后台对数据进行处理.然后传给前端
- 2017-3-3 : 添加特定问题页面,对应样式.
- 2017-3-2 : 添加后端接口,从数据库中获取标签信息,然后传给前端.
- 2017-2-28: 主页加载时从后端获取标签信息,展示在页面右边,及其样式
- 2017-2-27: 完成主页添加两个按钮: 最新,最热.及对应的后端接口.及页面结构样式
- 2017-2-26: 最热:从数据库获取问题数据,并按提问时间倒序排列
- 2017-2-25: 关联提交的问题和某用户的提问.PS: mongoose的CRUD操作是异步的,它喵的坑死我了.
- 2017-2-24: 完善问题提交的Ajax,后端写了个接口来处理提交的问题.并且定义了question和answer的Model
- 2017-2-23: 加上登录注册模块.完成登录/注册页的结构(样式未完成).引入数据库MongoDB,定义了connect.js和user的Model.
- 2017-2-13: 项目初始化.路由了几个页面,基本完成首页的结构和样式,更新README.md