vue和小程序的相同点和不同点

554 阅读3分钟

脑子里想记住6条,然后分别说出来

  1. 子组件写法不一样

在vue中,需要:

1)编写子组件;

2)在需要使用的父组件中通过 import引入;

3)在 vue的 components中注册;

4)在模板中使用;

在小程序中,需要:

1)编写子组件; 2)在子组件的 json文件中,将该文件声明为组件; 3)在需要引入的父组件的json文件中,在usingComponents填写引入组件的组件名以及路径; 4)在父组件中,直接引入即可

  1. 监听函数写法

vue:习惯@event绑定事件

<button v-on:click="counter += 1">Add 1</button>
<button v-on:click.stop="counter+=1">Add1</button>  //阻止事件冒泡

小程序中,全用bindtap(bind+event),或者catchtap(catch+event)绑定事件

<button bindtap="noWork">明天不上班</button>
<button catchtap="noWork">明天不上班</button>  //阻止事件冒泡
  1. 显示与隐藏元素

vue中,使用 v-if 和 v-show控制元素的显示和隐藏。

小程序中,使用 wx-if和 hidden控制元素的显示和隐藏。

  1. 列表渲染
vue:<li v-for="item in items">
小程序:<text wx:for="{{items}}">{{item}}</text>
  1. 数据绑定

vue:vue动态绑定一个变量的值为元素的某个属性的时候,会在变量前面加上冒号:

<img :src="imgSrc"/>

小程序:绑定某个变量的值为元素属性时,会用两个大括号括起来,如果不加括号,为被认为是字符串

<image src="{{imgSrc}}"></image>
  1. 生命周期

vue的钩子函数在跳转新页面时,钩子函数都会触发,但是小程序的钩子函数,页面不同的跳转方式,触发的钩子并不一样。

小程序重新打开页面不需要都重新执行。

onLoad: 页面加载

一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。

onShow: 页面显示

每次打开页面都会调用一次。

Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    // 页面创建时执行
  },
  onShow: function() {
    // 页面出现在前台时执行
  },
  onReady: function() {
    // 页面首次渲染完毕时执行
  },
  onHide: function() {
    // 页面从前台变为后台时执行
  },
  onUnload: function() {
    // 页面销毁时执行
  },
  onPullDownRefresh: function() {
    // 触发下拉刷新时执行
  },
  onReachBottom: function() {
    // 页面触底时执行
  },
  onShareAppMessage: function () {
    // 页面被用户分享时执行
  },
  onPageScroll: function() {
    // 页面滚动时执行
  },
  onResize: function() {
    // 页面尺寸变化时执行
  },
  onTabItemTap(item) {
    // tab 点击时执行
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  },
  // 事件响应函数
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // this is setData callback
    })
  },
  // 自由数据
  customData: {
    hi: 'MINA'
  }
})

developers.weixin.qq.com/miniprogram…

  1. 绑定事件传参

vue:绑定事件传参挺简单,只需要在触发事件的方法中,把需要传递的数据作为形参传入就可以了

小程序:不能直接在绑定事件的方法中传入参数,需要将参数作为属性值,绑定到元素上的 data-属性上,然后在方法中,通过 e.currentTarget.dataset.*的方式获取,从而完成参数的传递,因此就比较麻烦了

  1. 父子组件通信

在vue中

父组件向子组件传递数据,只需要在子组件通过 v-bind传入一个值,在子组件中,通过 props接收,即可完成数据的传递; 子组件和父组件通信可以通过 this.$emit将方法和数据传递给父组件。

在小程序中

父组件向子组件通信和vue类似,但是小程序没有通过 v-bind,而是直接将值赋值给一个变量,在子组件 properties中,接收传递的值

如果父组件想要调用子组件的方法:

vue会给子组件添加一个 ref属性,通过 this.$refs.ref的值便可以获取到该子组件,然后便可以调用子组件中的任意方法 小程序是给子组件添加 id或者 class,然后通过 this.selectComponent找到子组件,然后再调用子组件的方法

  1. 数据请求

vue一般会在created或者mounted中请求数据,

而在小程序,会在onLoad或者onShow中请求数据。