Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

造轮子 之 问答社区(精简版知乎) .

Notifications You must be signed in to change notification settings

free2pay/Ask-Answer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

60 Commits

Repository files navigation

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

一个问答网站.

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

#界面预览

粒子化

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

About

造轮子 之 问答社区(精简版知乎) .

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 65.0%
  • CSS 33.2%
  • HTML 1.8%

AltStyle によって変換されたページ (->オリジナル) /