美文网首页
微页面设计开发指南

微页面设计开发指南

作者: 编程范儿 | 来源:发表于2021-01-13 09:04 被阅读0次

    一、目标实现

    image

    左侧:为可用的组件列表,可拖动任一组件到中间的预览区域

    中间:为页面预览效果页面,选中任一组件,可在右侧进行参数配置

    右侧:为组件的参数配置(选中中间的组件时出现),页面配置(选中页面管理tab按钮时出现),组件管理(选中组件管理tab时出现),更改配置,中间的预览区域立即更新视图

    对于电商类的小程序,这种微页面有大量的需求,频繁的改动页面样式、结构和内容,以及发布内嵌的H5页面,后台做到灵活可配置。可免去频繁发布小程序的烦恼。

    二、开发设计规范

    后台部分

    管理后台文件目录结构

    image

    1. 可将以上的页面进行模块拆分:

    1. components目录放一些常用的组件,leftComponentsPage.vue和rightConfigPage.vue分别为左侧和右侧的集成组件

    2. configComponents目录是右侧显示的对应组件和页面的配置相关的组件,每个组件对应一个配置,封装成对应的组件

    3. viewComponents目录放置组件对应的样式结构代码,每个组件封装成一个样式组件,名称和配置组件一一对应

    4. details.vue为整合页面,分别调用左侧的leftComponentsPage.vue组件和右侧的rightConfigPage.vue组件,以及中间预览遍历组件按需加载样式组件

    2. 数据流方向

    image

    3. 组件数据格式

    以图片组件为例:

    {
      "image":{
        "showMethod":"YHYG", // 显示的排列方式,一行一个
        "borderWidth":0, 
        "pageMargin":0,
        "maxImageNum":10,
        "cornerType":"ZJ",
        "imageType":"normal",
        "showNum":6,
        "indicator":"style1",
        "items":[
          {
            "title":"",
            "imageUrl":"",
            "imageWidth":345,
            "imageHeight":241,
            "action":"webview",
            "maAppid":"",
            "maPagePath":"",
            "extLink":"",
            "actionArea":"hotArea",
            "hotAreas":{
                "width":100,
                "height":100,
                "xAxis":128,
                "yAxis":63
            }
          }
        ]
      }
    }
    

    image下面为组件的属性,由云端接口直接返回,items下面的每一项对应单个图片属性,右侧配置区域可对每个属性进行配置,每上传一张图片,往items里增加一项

    1. 视图组件结构和对应样式
    <template>
    <!-- 组件1:图片组件 -->
    <div class="component-wrapper image-component" :style="wrapperStyle">
    <div class="image-list">
       <div :style="imgItemStyle" class="image-item" v-for="(img, imgIndex) in imgObject.items" :key="imgIndex">
        <img class="image" :src="img.imageUrl ? img.imageUrl : defaultImg">
    <div :class="['hotarea', debugMode ? 'debug' : '' ]" :style="img.hotAreaStyle"
    @click="redirectPageTo(img.action, img.extLink, img.maAppid, img.maPagePath)" v-if="img.action !== 'nothing'">
    </div>
       </div>
    </div>
    </div>
    </template>
    

    类名为component-wrapper的图层为最外层,宽度为屏幕宽度100%(后台预览页面宽度定为375px),为这个图层设置左右padding值为组件传过来的pageMargin的大小

    computed: {
      wrapperStyle() {
        return {
          padding-left: this.comData.image.pageMargin + 'px',
          padding-right: this.comData.image.pageMargin + 'px'
        }
      }
    }
    

    通过传入组件数据items数组数据,动态计算相关图层样式动态绑定到对应的元素上热区hot-area图层样式对象hotAreaStyle根据组件是否开启点击交互,是默认全区域还是选定区域计算而来

    ......

    更多请移步公众号“太空编程”阅读

    相关文章

      网友评论

          本文标题:微页面设计开发指南

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