Skip to content
造轮子 之 问答社区(精简版知乎) .
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin 添加回答/修改支持markdown语法,修好点赞的Bug Mar 17, 2017
database 完成注册邮箱认证部分,但还有些小地方没处理,比如说密码长度,检测邮箱是否已注册,这应该是所谓的业务代码吧,没啥意思.不管了.反正不上线. Mar 31, 2017
public 完成注册邮箱认证部分,但还有些小地方没处理,比如说密码长度,检测邮箱是否已注册,这应该是所谓的业务代码吧,没啥意思.不管了.反正不上线. Mar 31, 2017
routes 完成注册邮箱认证部分,但还有些小地方没处理,比如说密码长度,检测邮箱是否已注册,这应该是所谓的业务代码吧,没啥意思.不管了.反正不上线. Mar 31, 2017
screenshots 完善README Mar 22, 2017
selfModules 自定义发送邮件的模块 Mar 30, 2017
uploads/avatars 完成注册邮箱认证部分,但还有些小地方没处理,比如说密码长度,检测邮箱是否已注册,这应该是所谓的业务代码吧,没啥意思.不管了.反正不上线. Mar 31, 2017
views 完成注册邮箱认证部分,但还有些小地方没处理,比如说密码长度,检测邮箱是否已注册,这应该是所谓的业务代码吧,没啥意思.不管了.反正不上线. Mar 31, 2017
.gitignore
README.md 修改掉用户主页,会把回答的地方出现2倍的数据的bug. Mar 26, 2017
app.js 完成注册邮箱认证部分,但还有些小地方没处理,比如说密码长度,检测邮箱是否已注册,这应该是所谓的业务代码吧,没啥意思.不管了.反正不上线. Mar 31, 2017

README.md

不知 - 与世界分享你刚编的故事

一个问答网站.

登录注册身份验证 提问 回答 修改个人资料 对回答点赞或反对 问题添加标签 关注其他用户 ......

#界面预览

粒子化

image

下雪

image

image

image

image

image

#技术栈

  • 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
You can’t perform that action at this time.