zoukankan      html  css  js  c++  java
  • 使用mpvue开发小程序教程

    从vue到mpvue再到微信小程序,这么几天下来感觉被搞晕了。三者之间的很多功能存在差异,项目也快接近尾声了,坑也踩了很多了,现在给后来的你们一点总结性经验:

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

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

    题外话,如果有在小程序里插入html片段的需求怎么办?可以用<rich-text>组件或者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. 在模板中,不支持直接绑定一个对象到styleclass属性上

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

    6. 事件处理中的注意点

    // 左侧为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事件。

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

    一句话,表单组件又多又复杂,框架可能Hold不住。所以在实际开发中,推荐直接使用小程序的表单组件标签来写,而不是使用Web的表单组件标签来写。当然了,在mpvue中使用了小程序的组件标签,数据绑定功能还是完全可以用的。给个示例:

    <template>
      <div>
        <picker @change="handlePickerChange" :value="selectedIndex" :range="messages">
          <view class="picker">当前消息:{{ messages[selectedIndex] }}</view>
        </picker>
      </div>
    </template>
    
    <script>
    export default {
      data () {
        return {
          selectedIndex: 0,
          messages: ['Hello', 'World', 'Haha']
        }
      },
      methods: {
        handlePickerChange (e) {
          console.log(e)
        }
      }
    }
    </script>

    其他注意事项

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

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

    原文链接:https://www.jianshu.com/p/579035fc9c18

  • 相关阅读:
    古典问题rabbit
    输入两个正整数m和n,求其最大公约数和最小公倍数
    水仙花数
    输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
    mybatis中的#和$的区别
    SpringMVC 中整合JSON、XML视图
    Gson简要使用笔记
    Spring Framework Artifacts
    Quartz的cron表达式
    清除svn文件目录的bat脚本
  • 原文地址:https://www.cnblogs.com/Webzhoushifa/p/9557243.html
Copyright © 2011-2022 走看看