PhoneGap(Cordova)开发总结

  1. 软件架构设计
  • 软件架构可以借鉴MVC的方式,View层负责页面跳转和事件监听,Controller层负责业务逻辑处理,Dao层负责数据发送和接收。
  1. 页面跳转/刷新时事件的注册与取消注册
  • 大部分页面需要根据后台数据生成html,这就用到了html的模板技术。当使用类似于template7这类模板引擎时,如何管理生成页面的事件就成为了一个问题。
  • 目前我探索出来的方式是,使用jQuery的on方法,把事件挂载在当前页面的根节点上,这样不管页面内容如何刷新都不会影响到事件的监听。
  • 貌似一些类似于backbone的前端框架可以帮忙解决事件的监听问题。
  1. 与服务端数据交互时的问题
  • Ajax刷新时需要给用户一个等待的反馈,请求结束后也需要给用户一个结果的反馈,由于不同模块反馈的内容不一样,因此如何实现一个公用的方案也需要考虑。
  • 我的想法是,配置一个公用的存储反馈内容的json对象,调用dao层方法的时候把配置和该对象一起传进去,减少业务层逻辑的复杂程度。
  1. id、class与css选择器使用的问题
  • 有时候为了好看,在写css选择器的时候会写上一串限制的参数,如果对于一些经常复用的class这应该是个好方法,但是我发现用着用着就把class当id用了,很多定义的class只使用了一次。我觉得以后在开发前先大致设想好自己想使用的class,提取一些公用的内容,把这种方案的特点发挥到极致。
  • 对于页面中绑定的事件等操作,可以不用写上一串选择器,因为绑定是运行时实时生效,不会因为页面切换导致绑定到其它class上面去了。
  1. view层函数的结构
  • 在写view层方法的时候,我习惯于写上init和load两个方法,其中init负责初始化事件监听,load负责加载和渲染页面,在实践后我觉得这是个非常实用的设计方案,但是目前我的代码仍然有很大的冗余,每个view都要写上init和load的调用。以后开发可以抽象出一个公用的view,然后调用loadView的方法传递一个json对象初始化view,json对象里面有init和load两个函数的定义,而对这两个方法的调用则由公共的view完成,减少代码冗余。
  1. dao层函数的结构
  • 在写dao层方法的时候,可以对jQuery的ajax的方法再进行一次封装,对错误的结果有个统一的处理方式。
  • 在这一层的开发上,需要与后台接口协商好参数名和格式,如果出现相同参数多个名字(后台比较乱)的情况,最好还是加一层封装,预处理一下数据。假如后台返回的数据格式已经非常完善的话,那么直接回给controller层即可。