美文网首页
移动App总结

移动App总结

作者: 7cf6c01a5633 | 来源:发表于2018-02-26 18:05 被阅读0次

移动app的UI在设计的时候一般采用750px的宽度设计,而开发的时候一般要适应几种分辨率的设备。可以采用多种布局方式,我这边使用rem来布局--通过修改html节点的fontSize来缩放整个页面。

  1. 设置缩放的页面最大的宽度以及基准的字体大小
// 设置字体
let docEl = document.documentElement
// let dpr = window.devicePixelRatio
let width = docEl.clientWidth >= 750 ? 750 : docEl.clientWidth
let fontSize = width / 10
let defaultUIWidth = 750
let fontScale = width / defaultUIWidth
// debugger
document.querySelector('html').style.fontSize = fontSize + 'px'
document.querySelector('body').style.fontSize = 20 * fontScale + 'px'
  1. 开发时需要把对应的px转换成rem,可以使用stylus-px2rem自动完成,具体的语法参考Stylus

Stylus比起less,sass之类的更加灵活,Stylus是基于js的,如果碰到问题可以自己修改源码,提供的一些内置函数。比如image-size(img),可以获取图片的宽高可以用来自动缩放图片。

Api的处理方式

因为现在大部分Api的处理过程都比较类似,而且代码重复。添加新的api就是复制修改,所以抽象成了工厂函数。

/**
 * 自动生成Api
 * @param {api配置文件} config
 */
function _apiGenerator (config /* map */) {
  let apiNames = Object.keys(config)

  for (let name of apiNames) {
    let apiRoute = config[name]
    // console.log(`==> generate api ${name}`)
    let realName = `fetch${name}`
    let actions = ['do', 'Update', 'Save', 'Add']
    for (let action of actions) {
      if (name.indexOf(action) !== -1) {
        realName = name
      }
    }
    apiMap[realName] = (formData, extra) => {
      // console.log(`==> api url : ${apiRoute.url} \n`)
      // 添加时间戳
      formData = {...formData, ...{t: new Date().getTime()}}

      let url = ''
      if (Config.isApp) {
        url = `${Config.host}${apiRoute.url}`
      } else {
        url = apiRoute.url
      }

      let params
      if (apiRoute.type === 'form') {
        params = Object.assign(apiRoute.params, formData)
        params = _serialize(params)
      } else if (apiRoute.type === 'json') {
        params = Object.assign(apiRoute.params, formData)

        if (params.hasOwnProperty('pageNum')) {
          url += params.pageNum
          delete params.pageNum
        }
        params = JSON.stringify(params, null, 2)
      } else if (apiRoute.type === 'mix') {
        params = Object.assign(apiRoute.params, formData)
        params = _serialize(params)
        url += '?' + params
        params = JSON.stringify({ ...apiRoute.extra, ...extra }, null, 2)
      } else {
        // if (apiRoute.type === 'url') {
        params = Object.assign(apiRoute.params || {}, formData)
        if (params.hasOwnProperty('pageNum')) {
          url += params.pageNum
          delete params.pageNum
        }
        params = _serialize(params)
        url += '?' + params
        params = null
      }

      return fetch(url, {
        method: apiRoute.method,
        body: params,
        headers: {
          'Content-Type': 'application/json;charset=UTF-8'
        },
        credentials: 'same-origin'
      }).then(checkStatus)
    }
  }
}

结合Vuex使用时发现有些接口是用来修改数据的,并不需要绑定数据到Vuex,所以我就在定义Api方法的时候添加了几个action(save, do, update, add)。这些接口直接返回数据,进行异步处理。

也是用工厂函数来生成对应的Vuex的Actions:

function _factory (ApiMap /* ApiMap */) {
  for (let api in ApiMap) {
    actions[api] = ({commit}, params) => {
      return Api[api](params).then(data => {
        return _checkData(data).then(data => {
          commit(api, { ...data, ...params })
          return data
        }).catch(data => {
          commit(api, {...data, ...params})
          return data
        })
      }).catch(err => {
        // 网络问题
        console.log('Network error ' + err.message)
      })
    }
  }
}

在不需要绑定数据的接口有两种使用方法:

  1. 直接使用接口
Api.SaveName(params).then(data => {
  // TODO
})

或者

this.$store.dispatch('SaveName', params).then(data => {
  // TODO
})

UI使用的是滴滴出品Cube-UI

提供了基本组件和扩展方法。

相关文章

  • 移动App总结

    移动app的UI在设计的时候一般采用750px的宽度设计,而开发的时候一般要适应几种分辨率的设备。可以采用多种布局...

  • 移动APP技术开发框架具有代表性的框架是哪个?

    在此之前济南文汇传媒的小编就已经总结过APP开发中移动APP的技术框架都有哪些。当然,小编也只是总结了比较有代表性...

  • 移动 APP 网络优化概述

    移动 APP 网络优化概述 移动 APP 网络优化概述

  • 移动 app 测试点总结

    功能性测试 根据软件需求文档,验证App的各个功能点的实现。 根据app的使用场景、业务逻辑,参考需求构建测试点;...

  • 移动app有几种开发模式?

    移动App即移动设备上的应用软件。目前移动App开发主要分为三种模式:Native App、Web App和Hyb...

  • 移动app有几种开发模式?

    移动App即移动设备上的应用软件。目前移动App开发主要分为三种模式:Native App、Web App和Hyb...

  • iOS学习周报四

    文章 2015移动开发之iOS回顾观点:个人总结,主要是iOS App适配64位、WWDC 2015、iOS 9、...

  • 移动端

    app Web App Hybird App 移动端页面 设计图 测试 移动端的设置 移动端的布局 弹性 fl...

  • Android应用架构演变

    引言 总结了多年的移动开发经验,特别是在Android端的积累,以前认为从移动端APP谈架构,其实有点举大旗,因为...

  • Android应用架构演变

    引言 总结了多年的移动开发经验,特别是在Android端的积累,以前认为从移动端APP谈架构,其实有点举大旗,因为...

网友评论

      本文标题:移动App总结

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