团队项目技术规格说明书

团队项目技术规格说明书

概述

​ 我们团队的项目继承自上一代的版本,使用框架与上一代基本相同,但由于部分版本不再支持,我们需要对其进行一些修改。

前段框架:

​ 前端使用React Native,是React在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用。

​ React Native使用户只使用JavaScript也能编写原生移动应用。前端部分目前决定采用上一代产品的框架。尽管React Native可以支持IOS系统,我们的产品仅支持Android系统。

网络请求:

使用Fetch API。Fetch等同于 XMLHttpRequest,它提供了许多与XMLHttpRequest相同的功能,但被设计成更具可扩展性和高效性。Fetch 的核心在于对HTTP接口的抽象,包括Request,Response,Headers,Body,以及用于初始化异步请求的global fetch。得益于JavaScript实现的这些抽象好的HTTP模块,其他接口能够很方便的使用这些功能。

​ 前后端交互最常用的是ajax,但ajax只是只是对于XMLHttpRequest的一种封装。而Fetch API则是XMLHttpRequest的最新替代技术。XMLHttpRequest 是一个设计粗糙的 API,不符合关注分离(Separation of Concerns)的原则。Fetch最不同于ajax的是让我们对于请求的设置更加方便,更加灵活。

使用环境

​ 由于一代版本仅仅适配Android 8.0版本,现有许多Android手机使用时会出现闪退的情况,我们决定在Android studio这个编辑器自带的虚拟机上运行。并且会让产品与Android9.0适配,从而变得更加实用。

流程图

UI组件

UI部分包含所有布局、框架和组件的定义,按照页面分为四个主要模块。其中包含必要的属性、状态的定义。在Interact中完成页面的切换及组件的的功能
TitleBar 主要用于显示博客名称、班级名称,点击用户头像进入用户个人信息页。
ImageButton 主要出现于用户个人信息页、班级首页、班级博客首页,点击按钮跳转到对应的页面
RadioButton 作为标签,选择RadioButton来指定页面内容的排列或分类方式
DropList 在选择项固定时,要求用户在DropList提供的选项中进行选择
TextField 用户用来填写简短的信息,如标题
TextArea 用户用来填写较多的内容,如评论、作业内容
TextWrite 用户写博客存储的位置
TextStore 用户存储信息的位置

API对接

此部分不显示之前已有的接口。另外,由于之前版本的函数命名并不规范,如AddLink添加成员,DeleteMember删除成员,我们也会对这些进行修改。

Service中包含所有与API的对接的内容,将每一个APi包装成一个函数,供Interact部分调用。调用时只需按要求传入参数,无需知晓url和fetch方法的具体使用方式,数据将以json的形式返回
ShowFans 显示拥有的粉丝列表
ShowFollow 显示关注列表
ThumbUp 给博文点赞
Collect 收藏博文
GetAnnounce 显示班级公告
GetLatestBlog 得到最新博文(按时间顺序显示博文)
Devote 投票

错误处理

在Exception中定义错误类型并集中进行错误处理
InputException 用户在各种输入框中输入的内容有误或格式不当
BackException 使用接口时出现错误
InterException 前端数据处理出现问题
ConnectException 连接APP时出现问题
StoreException 本地保存数据时出现错误

耦合

​ 最典型就是将API与本地程序的连接封装成对应函数,从而保证程序的独立性和内容的封闭性,耦合性也得到了保证。

应对变化的灵活性

​ 最大的问题就是Android版本的更新导致原有程序无法使用,这一问题如果要解决的话只能通过开放人员重新更新从而解决。其次比如博客园自身进行修改,这一方面,由于接口部分往往不会进行大量更改,而我们的程序也封装成了很好的接口,所以不会出现什么问题。

如何处理错误情况

​ 主要是将不同板块的exception发送成不同的错误信息,反馈给使用者。

posted @ 2019-04-01 13:18  PureMan6  阅读(305)  评论(0编辑  收藏  举报