• 团队项目技术规格说明书


    团队项目技术规格说明书

    概述

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

    前段框架:

    ​ 前端使用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发送成不同的错误信息,反馈给使用者。

  • 相关阅读:
    SpringBoot引入spring-boot-starter-security后无法接收前端请求
    虚拟机IP地址不断改变的解决办法
    加密
    Golang设计模式学习笔记--建造者模式
    goland快捷键
    使用webhook实现博客网站自动化部署
    hugo + nginx 搭建博客记录
    Maven打包方式(多模块)
    如何抑制SettingWithCopyWarning
    时间复杂度分析--公式法
  • 原文地址:https://www.cnblogs.com/PureMan6/p/10635811.html
Copyright © 2020-2023  润新知