• Wepy框架和mpVue框架的比较及使用mpVue框架需要注意的点


    Wepy框架
    它是一款类Vue框架,在代码风格上借鉴了Vue,本身和Vue没有任何关系。

    mpVue框架
    它是从整个Vue的核心代码上经过二次开发而形成的一个框架,相当于是给Vue本身赋能,增加了开发微信小程序的能力。

    三者的区别图:

    使用mpVue时需要注意的点:

    1. 在模板中,动态插入HTML的v-html指令不可用

    这条很好理解,小程序的界面并不是基于浏览器的BOM/DOM的,所以不能动态的在界面模板里直接插入HTML片段来显示。

    题外话,如果有在小程序里插入html片段的需求怎么办?可以用组件或者wxParse(https://github.com/icindy/wxParse)来实现。

    2. 在模板中,用于数据绑定的双括号语法{{}}中的表达式功能存在诸多限制

    在Vue本身的模板内双括号语法中,我们可以对绑定变量进行比较丰富的处理,比如:

    • 可以调用methods下的函数, 例如:
    <template>
      <div>{{ formatMessage(msg) }}</div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          msg: "Hello,World"
        }
      },
      methods: {
        formatMessage(str) {
          return str.trim().split(',').join('#')
        }
      }
    }
    </script>
    
    • 如果变量是对象的话,也可以调用对象的成员方法
      <div>{{ msg.trim().split(',').join('#') }}</div>
    • 可以使用过滤器来处理变量,最有用的场景算是格式化数据了
      <div>{{ msg | format }}</div>

    以上这些好用的功能,在mpvue中,记得都是通通不能用的哦!!!

    我们只能在双括号中使用一些简单的运算符运算(+ - * % ?: ! == === > < [] .)。

    可以考虑使用计算属性(computed)来做。

    3. 在模板中,除事件监听外,其余地方都不能调用methods下的函数

    可用的替代方案: 计算属性

    4. 在模板中,不支持直接绑定一个对象到style或class属性上

    最好的方案: 计算属性

    <template>
      <div :class="classStr"></div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          classObject: {
            active: true,
            'text-danger': false
          }
        }
      },
      computed: {
        classStr() {
          let arr = []
          for (let p in this.classObject) {
            if (this.classObject[p]) {
              arr.push(p)
            }
          }
          return arr.join(' ') 
        }
      }
    }
    </script>
    

    5. 在模板中,嵌套使用v-for时,必须指定索引index

    通常,我们在Vue模板中嵌套循环渲染数组的时候,一般是这个样子的:

    <template>
      <ul v-for="category in categories">
        <li v-for="product in category.products">{{product.name}}</li>
      </ul>
    </template>
    

    但在mpvue中使用这种嵌套结构的v-for时,则必须每层的v-for上都给出索引,且索引需取不同名字:

    <template>
      <ul v-for="(category, index) in categories">
        <li v-for="(product, productIndex) in category.products">{{product.name}}</li>
      </ul>
    </template>
    

    6. 事件处理中的注意点

    在mpvue中,一般可以使用Web的DOM事件名来绑定事件,mpvue会将Web事件名映射成对应的小程序事件名,对应列表如下:

    // 左侧为WEB事件 : 右侧为对应的小程序事件
    {
    click: 'tap',
    touchstart: 'touchstart',
    touchmove: 'touchmove',
    touchcancel: 'touchcancel',
    touchend: 'touchend',
    tap: 'tap',
    longtap: 'longtap',
    input: 'input',
    change: 'change',
    submit: 'submit',
    blur: 'blur',
    focus: 'focus',
    reset: 'reset',
    confirm: 'confirm',
    columnchange: 'columnchange',
    linechange: 'linechange',
    error: 'error',
    scrolltoupper: 'scrolltoupper',
    scrolltolower: 'scrolltolower',
    scroll: 'scroll'
    }

    除了上面的之外,Web表单组件<input><textarea>的change事件会被转为blur事件。

    然后,像keydown、keypress之类的键盘事件也没有了,因为小程序没有键盘,所以不需要这些事件。

    7. 对于表单,请直接使用小程序原生的表单组件

    其他注意事项

    另外,在Vue开发Web应用的时候,通常使用vue-router来进行页面路由。但是在mpvue小程序开发中,不能用这种方式,请使用标签和小程序原生API wx.navigateTo等来做路由功能。

    还有就是请求后端数据,我们通常在Web开发中使用axios等ajax库来实现,但是在小程序开发中也是不能用的,也请使用小程序的原生API wx.request等来进行。

    微信小程序的UI组件库

    • WeUI
    • iView
    • ZanUI
    • MinUI
    • Wux
    • ColorUI
  • 相关阅读:
    HDU 2874 Connections between cities(LCA离线算法实现)
    LCA离线算法Tarjan详解
    HDU 2586 How far away ?(LCA在线算法实现)
    LCA在线算法详解
    LA 4287 等价性证明(强连通分量缩点)
    POJ 2117 Electricity(割点求连通分量)
    ZOJ 1015 Fishing Net(弦图判定)
    BZOJ 1006: [HNOI2008]神奇的国度(弦图染色)
    POJ 2976 Dropping tests(分数规划)
    BZOJ 1003: [ZJOI2006]物流运输(spfa+dp)
  • 原文地址:https://www.cnblogs.com/zppsakura/p/11388015.html
Copyright © 2020-2023  润新知