程序功能分析
它具有以下功能:
用户功能:用户可以注册、登录、退出系统;
发布问题:用户可以发布自己的问题;
回复功能:任何人都可以对问题进行回复;
第0个里程碑:搭架子
第一个里程碑主要是把项目的架子搭起来,方便我们后面的开发。
- 打算采用JavaScript,支持ES6. 具体会用到的库和框架:Express,Bootstrap,react,MongoDB;
- 构建工具用npm;
- 代码提交到github上,并会在README中向别人说明拿到代码之后,如何能在自己的电脑上快速把代码运行起来,看到效果(hello world).
这一步的重点在于,你能够把项目的架子搭起来,能够保证以后遇到问题的时候和需要跟人交流的时候,能够方便地让别人看到你的代码或者效果。
验收条件:
其他人可以方便的获取你的代码
其他人可以通过你的说明文件,在本地将服务器快速的运行起来,看到页面
通过简单的页面可以证明你使用的技术栈和主要的库等已经配置正确
若干篇博客用来记录你的学习收获和疑问
第1个里程碑:发布和查看问题
这个里程碑主要是为了让我们快速上手,实现一些基本的最重要的的功能:“问题的发布和查看”。
验收条件:
任何人都可以发布问题;
发布问题时,需要描述问题,手动填写发布人并记录“创建时间”即可,
可以以列表形式查看当前所有问题
代码以“小步”方式提交到github上,并且每个commit都有清楚的描述
若干篇博客用来记录你的学习收获和疑问
注意:
暂不用提供用户相关功能(如注册、登录等),以及评论等功能
由于没有用户功能,所以在发布时,需要手动提供“发布人”姓名
这一步不需要使用真实数据库,可以把数据直接保存在内存中某个变量,或者一个JSON文件里
第2个里程碑:用户登录
在这个里程碑,我们将增加一个重要的功能:用户的注册、登录、退出。这个功能几乎在每个网站中都会用到,非常重要,所以我们尽快实现它。
验收条件
查看问题时不需要登录
只有注册成用户并登录后,才能发布自己的问题
如果没有登录,则不允许访问“发布”页面
注册用户时,需要提供以下数据 “用户名”,“密码”。其ID由数据库或代码自动生成,每个用户的ID都是唯一并且不变的
用户登录时,需要输入“用户名”和“密码”
用户登录后,可以退出
用户可以修改自己的用户名和密码
发布问题时,不需要再手动输入“发布人”,而是由系统自动拿到当前用户的ID并使用该ID
注意点
原有的数据库结构需要修改。之前保存的是手动输入的“发布人”姓名,而现在应该使用登录者的ID。当需要显示其用户名时,可以通过ID拿到其用户名
第3个里程碑:修改和删除问题
这个里程碑实现问题的删除和修改;
验收条件:
用户不能修改或删除别人的问题;
修改问题时,不需要手动输入“修改人”和"修改时间",而是由系统自动拿到当前用户的ID并使用该ID,并由系统创建修改时间
删除博客时,要向用户发出确认,防止误操作
代码以“小步”方式提交到github上,并且每个commit都有清楚的描述
若干篇博客用来记录你的学习收获和疑问
注意:
不需要记录每次修改的内容,直接保存最后的修改即可
删除博客时,直接从系统中删除
这一步不需要使用真实数据库,可以把数据直接保存在内存中某个变量,或者一个JSON文件里
第4个里程碑:使用真实数据库
使用真实的数据库mongodb来替换前三个里程碑中的模拟数据库。之所以把它单独拿出来,是因为从技术角度上讲,还是有一定的难度,比如数据初始化、异常处理等
验收条件:
前一个里程碑的功能没有被破坏
可以通过某种方式来初始化数据库结构和预置数据,并在README中说明步骤
代码以“小步”方式提交到github上,并且每个commit都有清楚的描述
若干篇博客用来记录你的学习收获和疑问
第5个里程碑:问题回复
对于每个问题,每个人都可以回复。为了简化需求,在回复时,不论用户是否登录,都要求输入用户名,一视同仁。
验收条件
查看每个问题时,都可以看到已有的回复,并按某种时间顺序排列
查看每个问题时,都可以看到一个输入框输入新的回复,包括“姓名”和“内容”,可以提交新的回复.
<i>协作者:李鹏</i>