项目建议

作者: Stark_Dylan | 来源:发表于2016-04-04 12:53 被阅读485次

    从项目创建开始

    • 版本支持 建议iOS 7.0+

    • 语言选择:** Objective-C**
      OC,Swift。 OC对于大多数iOS开发者来说都没有问题,Swift只有部分开发者熟悉并且运用自如。 创业公司建议使用OC,这样便于后续人员的维护以及扩展,等到时机成熟了接入Swift进行混合开发即可。如果喜欢Swift开发或者熟悉这门语言的话可以直接用。

    • 工程结构:主工程 + cocoapods
      现在的iOS项目一般都离不开第三方库,所以要选择合理的第三方库管理,使用OC当然要配合cocoapods,如实使用Swift可以选择carthage等。不建议自己手动管理第三方库。

    • 原生/H5: 建议原生为主+H5

    关于用原生好还是用H5好,一直在争论,其实适应项目最重要。如果我们不止要做这些:AndroidApp, iOS App, 微信公众号;
    如果我们的H5人员很缺,并且职业技能不是很好,并且公司中恰好有人对原生开发很熟悉,并且开发效率很高,那么还是优先选择原生的,某些小部分的界面可以使用H5开发。相反,则以H5为主,原生为辅助,App中,iOS、Android、微信公众号等相同的界面使用H5开发,App转悠的部分,比如说导航条,标题栏,登录等界面才使用原生实现,另外,webView里边有H5的点击事件,也许是URL链接,也许是JS,都不要让他直接在当前web容器中跳转,要在native端做一下截获,使用原生跳转。如果要使用一些已经开源的框架,比如说ReactNative,一定要慎重,这些框架学习的成本比较高,而且效率、性能未必好。

    如果本地以web为主,那么就要优化这里的显示。webView分为两种方式,一种是加载本地的h5界面,另一种是加载服务器端的h5界面。加载服务器的比较简单,直接load一下就好了,加载本地的h5界面,相对比较复杂,但是加载速度要快于前者。

    • 架构选型 MVC/MVP/MVVM 建议使用MVC
      • MVC 经典模式 Model-View-Controller
      • MVP 解耦V M
      • MVVM 优化MVP,双向绑定,View的变动自动映射到VM,反之亦然。

    别的架构模式在设计,不知道要比MVC复杂了多少倍,为了降低成本,还是直接使用大家都熟悉的MVC比较好。

    项目
    • 网络层 使用手机号码+验证码登录

    网络层开发已经相对成熟,有很多的成熟框架,比如说afnet,mknet等、所以要注意的只有安全的问题。 现在大多数的app的登录流程就是 用户名加密码登录,然后获取到token存到本地,很容易被抓包拦截然后模拟请求。所以这里强烈建议使用手机号码+验证码登录的方式,设计简单,而且很安全。

    接口数据一定要使用JSON,但是这里服务端要额外的注意JSON的数据类型,举个例子,JSON不支持Date类型,如果传的话,可能会被解析成 某年某月某日时区这样的,客户端很难处理,有些bool会直接返回true,false字串,甚至还会返回null,这些都会导致客户端显示出错或者解析出错。 所以服务端一定要保证数据类型与数据的正确,给客服端开发减轻压力。

    一般的JSON格式

    {
     error : 0, //错误码
     message : "hello", // 提示信息
     data : {...}, //数据
    }
    

    另外接口的设计一定要加上版本号,在客户端也有方便的切换版本的地方。举例: /v2/login.api -> /v3/login.api 在客户端可以直接封装一个小方法 path('/login'), 这个path方法就是自动加上版本号的,便于统一升级等。

    • 数据层 缓存一定要做好,使用数据库

    阅读类的App需要做本地的缓存,这个可以看一下简书,最好缓存一定的文章给读者看。 这里缓存策略一定要做。 最好在本地自己维护数据库,然后把每次网络请求的数据更新到数据库中,然后加上过期时间等策略控制本地缓存大小,提供缓存清理等功能。

    • 展示层 SB/XIB + 纯代码

    界面的开发上建议选择 SB/XIB + AutoLayout与纯代码结合开发。 因为App中大部分的几面比较简单,使用SB可以加快开发的速度。

    • 基类的定义

    ViewController, NavigationController最好定义基类,便于统一操作以及一些代码便捷。

    参考内容
    1. 项目的结构:

    总体看起来是这样的


    每一个模块内是这样的


    1. 代码规范需要注意。

    2. 关于部分第三方库的选择。

    JSON->Model : YYModel, JSONModel
    Network : AFNetworking
    ImageSyncLoad: SDWebImage, YYImage(yyimageView提供了gif等支持)
    WaterFlow: CHTCollectionViewWaterfallLayout
    HUD,alert: SVProgressHUD, LGAlertView
    DB: FMDB
    Debug: FLEX
    Animated: pop, canvas.

    相关文章

      网友评论

      • rolei:json还是用第三方库 Mantle 比较方便,好处多多
        Stark_Dylan:@rolei 嗯但是Mantle上手姿势略复杂于JSONModel 哈哈 都ok的
      • Lol刀妹:请教一下 项目中的三方库越多 是不是会越卡
        Stark_Dylan:@蔡宛峰 项目卡 指的是?

      本文标题:项目建议

      本文链接:https://www.haomeiwen.com/subject/jdgulttx.html