美文网首页
最近感觉人手不够,所以筹个代码(小程序开发规范)

最近感觉人手不够,所以筹个代码(小程序开发规范)

作者: CPFAN | 来源:发表于2020-05-05 17:36 被阅读0次

简介

===============================================================================

小程序开发规范相对轻松,有两种选择,第一种选择,使用小程序基础api做开发,第二种选择,使用自研框架idxwrd-min-program-framework进行开发,使用其他第三方框架开发均视为无效。

接口地址:http://47.116.34.238:1980/swagger-ui.html

目前已开发的框架内组件使用手册及拓展内容:

===============================================================================

目录简介

===============================================================================

小程序开发目录 /cpfan_plant/min-program

小程序目录结构

以上目录结构,由上到下依次为:

  1. components 组件开发存放文件目录
  2. framework 框架相关内容存放文件目录
  3. image 图标,图片资源存放路径
  4. modules 框架数据处理模块存放文件目录
  5. pages 页面存放目录
  6. theme 公共主题类xcss文件存放地址
  7. utils 公共工具类js存放地址

===============================================================================

开发细节要求

===============================================================================

小程序基础api开发

基础小程序api请参考官网地址https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/api.html

注:
使用小程序基础api进行开发,单次任务价格将有所下降。

使用 idxwrd-min-program-framework 框架开发

wx.module({
  imports: ['childModule'],
  name: 'demoName',
  cache: {},
  data: {},
  methods: {
    demoRequest({
      page,
      modules,
      cache
    }, callback = {}){},
    demoEventMethod({
      page,
      modules,
      cache
    }, callback = {}){}
  }
});

Page({
  imports: ['demoName'],
  context(modules, cache){
    this.stream([(commit, discontinue)=>{}], (msg)=>{});
    this.initPageData();
    this.on('show', ()=>{});
    modules.demoName.demoRequest();
    return {
        demoClick: (e) => {
            modules.demoName.demoEventMethod(e);
        }
    }
  }
})

Component({
  imports: ['demoName'],
  context(page, modules, cache){
    this.stream([(commit, discontinue)=>{}], (msg)=>{});
    this.on('show', ()=>{});
    modules.demoName.demoRequest();
    return {
        demoClick: (e) => {
            modules.demoName.demoEventMethod(e);
        }
    }
  }
});

以上为数据处理模块js,页面js,组件js三部分的基础写法。

注:
数据处理模块编写完成后,需要在app.js中引用,默认引用目录为module文件夹下,引用后,该数据处理模块就可以在多个page和comment中使用

数据处理模块主要包括一下四个属性:

  1. name
    模块名称,也是模块引用时需要标注的内容
  2. cache
    缓存,声明并初始化缓存,如果其他模块内存在同名缓存,则保持原有值不变,如果不存在则使用此处定义的内容进行初始化,类似小程序默认demo中getApp().global操作,全局通用
  3. data
    当前页面、组件的data,在数据模块中定义的并不会因为引用而处处相同,相反是完全独立的。
  4. methods
    数据处理模块的方法,该方法可以在对应的页面、组件中通过,modules.模块名.模块方法来进行调用。
    每个methods中的方法默认接受两个参数,第一个参数包含三个变量page,modules,cache,分别表示当前用户所使用的页面,数据处理模块集合和缓存,可以根据数据处理需求,统一操作页面(类似setData()等),imports进来的子模块方法。第二个参数为方法调用时传入参数,即在该方法被使用的时候,可以允许且只能传入一个对象作为参数,而传入的对象将在这里被接收,通常情况下做参数即回调函数的使用,可以参考framework/modules/userInfo.js文件(该数据处理模块包含了整个前后端的登录校验逻辑,可以在需要的页面或者组件中灵活使用)

page与comment的写法基本相同,均使用imports属性引入数据处理模块(如果没有必要,也可以不引用),均使用context方法作为初始化方法。不同点是,page内的context通过this获取到的基础类型方法比context更多(比如页面跳转等详见下方api)。comment内的context中通过this可获取到的基础方法较少,同时,在参数中,比page中的context多了一个page参数,表示当前组件所在的页面,通过page参数,也可以调用当前组件所在页面内的方法。
context方法必须返回一个对象,该对象表示当前page和context的可调用方法,可以在wxml里通过bindxxx形式进行事件绑定。

context方法中,有两个比较重要的公共方法:

  1. stream
    这个方法主要用于处理复杂的流程逻辑,需要严格按照某个流程进行数据处理,但所有步骤均为异步的情况下使用,该方法的第一个参数为数组,可在其中定义复数的方法来确定流程内容,当异步操作成功石,调用commit方法进入下一步,否则可调用discount中断流程逻辑,第二个参数为日志参数,每一个commit和discount方法被调用的时候,都可以输入对应的日志或者其它参数,该参数都会被传入stream的第二个参数的方法内,进行更细致的统一处理。

  2. on
    这个方法用于绑定页面、组件加载时机,即原本应该写在其中的onShow等方法,此处可以使用on方法使用框架托管的方式来进行加载,这样就可以在对应的加载时机内调用数据处理模块,同时保留该加载时机对应的参数使用

===============================================================================

api

===============================================================================

通用

缓存(可以在context方法内使用传入的cache,也可以通过this.cache调用,页面加载时,控制台会打印当前页面加载时的缓存内容)

cache

uuid(此处并不是一个方法而是一个动态变换的属性,每一次调用该属性获取到的uuid都是不同的)

uuid

base64(与微信小程序api内的base64编/解码方法相同)

base64Encode(encodeStr)
base64Decode(decodeStr)

MD5

hexMd5(s)
b64Md5(s)
strMd5(s)
hexHmacMd5(key, data)
b64HmacMd5(key, data)
strHmacMd5(key, data)

日期

/**
* date: 需要格式化的日期
* fmt: 格式化通配符
*   y:年
*   M:月
*   d:日
*   h:小时
*   m:分
*   s:秒
*   S:毫秒
*/
dateFormat(date, fmt)

请求(config内容是在wx.request基础上拓展的,原有wx.requset内的参数依然有效)

/**
* config = {
*     params: {}, url参数,会在url后用?key=value的形式添加参数
*     data: {}, reqeustBody参数
*     formData: {}, 使用formData形式提交参数
*     requestSuccess: ()=>{},
*     requestFailure: ()=>{},
*     requestError: ()=>{}
* }
*/
doRequest(config)
/** 基于doRequest的二次封装,方便做get请求*/
doGet(config)
/** 基于doRequest的二次封装,方便做post请求*/
doPost(config)

路由(可以使用this调用,也可以在wxml里直接使用事件绑定)

redirectTo(url)
<view bindtap="redirectTo" id="url"></view>
navigateTo(url)
<view bindtap="navigateTo" id="url"></view>
navigateBack(delta)
<view bindtap="navigateBack" id="-1"></view>

流程处理(元素查询可参见微信小程序API:https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html

/**
* fnList:流程函数列表,数据类型-数组
* step:流程执行阶段,每一次通过或者跳出都会被触发执行
* end:流程正常结束后,执行该函数
*/
stream(fnList, step, end)
/**
* 查询页面内单个元素
*/
select(selector, handle)
/**
* 查询页面内所有附和的元素
*/
selectAll(selector, handle)

日志

logDebug()
logInfo()
logWarn()
logError()

Page context

初始化页面参数,参数为undefined的时将不加入当前page的data中

initPageData({
  key: value
})

页面生命周期绑定,与原生绑定内容一致

/**
* eventName: 
* 
* load                                                      生命周期回调—监听页面加载
* show                                                    生命周期回调—监听页面显示
* ready                                                   生命周期回调—监听页面初次渲染完成
* hide                                                     生命周期回调—监听页面隐藏
* unload                                                 生命周期回调—监听页面卸载
* pullDownRefresh                                监听用户下拉动作
* reachBottom                                       页面上拉触底事件的处理函数
* shareAppMessage                             用户点击右上角转发
* pageScroll                                          页面滚动触发事件的处理函数
* resize                                                 页面尺寸改变时触发,详见 响应显示区域变化
* tabItemTap                                         当前是 tab 页时,点击 tab 时触发
*/
on(eventName, handler)

Component context

组件生命周期绑定,与原生绑定内容一致

/**
* eventName: 
* 
* created                                                 组件生命周期函数-在组件实例刚刚被创建时执行
*                                                              注意此时不能调用 setData )   
* attached                                               组件生命周期函数-在组件实例进入页面节点树时执行)  
* ready                                                    组件生命周期函数-在组件布局完成后执行) 
* moved                                                  组件生命周期函数-在组件实例被移动到节点树另一个位置时执行) 
* detached                                              组件生命周期函数-在组件实例被从页面节点树移除时执行) 
*/
on(eventName, handler)

相关文章

网友评论

      本文标题:最近感觉人手不够,所以筹个代码(小程序开发规范)

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