pp电子

登录
免费开通

vue和微信小程序的区别、较量

vue和微信小程序,,,在微信小程序开发中,,,两者有许多相同之处,,,也有一些区别,,,下面就为各人总结一下vue和微信小程序的区别、较量。。。

vue和微信小程序的区别、较量

一、生命周期

先贴两张图:

vue生命周期

vue和微信小程序的区别、较量

小程序生命周期

vue和微信小程序的区别、较量

相比之下,,,小程序的钩子函数要简朴得多。。。

vue的钩子函数在跳转新页面时,,,钩子函数都会触发,,,可是小程序的钩子函数,,,页面差别的跳转方式,,,触发的钩子并纷歧样。。。

  • onLoad: 页面加载

一个页面只会挪用一次,,,可以在 onLoad 中获取翻开目今页面所挪用的 query 参数。。。

  • onShow: 页面显示

每次翻开页面都会挪用一次。。。

  • onReady: 页面首次渲染完成

一个页面只会挪用一次,,,代表页面已经准备稳当,,,可以和视图层举行交互。。。

对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。。。详见生命周期

  • onHide: 页面隐藏

当navigateTo或底部tab切换时挪用。。。

  • onUnload: 页面卸载

当redirectTo或navigateBack的时间挪用。。。

数据请求

在页面加载请求数据时,,,两者钩子的使用有些类似,,,vue一般会在created或者mounted中请求数据,,,而在小程序,,,会在onLoad或者onShow中请求数据。。。

二、数据绑定

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

<img :src="imgSrc"/> 

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

<image src="{{imgSrc}}"></image> 

三、列表渲染

直接贴代码,,,两者照旧有些相似

vue:

<ul id="example-1">  
  <li v-for="item in items">  
    {{ item.message }}  
  </li>  
</ul>  
 
var example1 = new Vue({  
  el: '#example-1',  
  data: {  
    items: [  
      { message: 'Foo' },  
      { message: 'Bar' }  
    ] 
   }  
})  

小程序:

Page({  
  data: {  
    items: [  
      { message: 'Foo' },  
      { message: 'Bar' }  
    ]  
  }  
})  
 
<text wx:for="{{items}}">{{item}}</text>  

四、显示与隐藏元素

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

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

五、事务处理

vue:使用v-on:event绑定事务,,,或者使用@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-model,然后再绑定data中对应的一个值,,,当表单位素内容爆发转变时,,,data中对应的值也会响应改变,,,这是vue很是nice的一点。。。

<div id="app">  
    <input v-model="reason" placeholder="填写理由" class='reason'/>  
</div>  
 
new Vue({  
  el: '#app',  
  data: {  
   reason:''  
  }  
})  

可是在小程序中,,,却没有这个功效。。。那怎么办呢?? ????

当表单内容爆发转变时,,,会触揭晓单位素上绑定的要领,,,然后在该要领中,,,通过this.setData({key:value})来将表单上的值赋值给data中的对应值。。。

下面是代码,,,可以感受一下:

<input bindinput="bindReason" placeholder="填写理由" class='reason' value='{{reason}}' name="reason" />  
Page({  
data:{  
    reason:''  
},  
bindReason(e) {  
    this.setData({  
      reason: e.detail.value  
    })  
  }  
}) 

当页面表单位素许多的时间,,,更改值就是一件体力活了。。。和小程序一较量,,,vue的v-model简直爽的不要不要的。。。

2.取值

vue中,,,通过this.reason取值

小程序中,,,通过this.data.reason取值

七、绑定事务传参

在vue中,,,绑定事务传参挺简朴,,,只需要在触发事务的要领中,,,把需要转达的数据作为形参传入就可以了,,,例如:

<button @click="say('明天不上班')"></button>  
new Vue({  
  el: '#app',  
  methods:{  
    say(arg){  
    consloe.log(arg)  
    }  
  }  
})  

在小程序中,,,不可直接在绑定事务的要领中传入参数,,,需要将参数作为属性值,,,绑定到元素上的data-属性上,,,然后在要领中,,,通过e.currentTarget.dataset.*的方式获。。。,从而完成参数的转达,,,很贫困有没有...

<view class='tr' bindtap='toApprove' data-id="{{item.id}}"></view>  
Page({  
data:{  
    reason:''  
},  
toApprove(e) {  
    let id = e.currentTarget.dataset.id;  
  }  
})  

八、父子组件通讯

1.子组件的使用

在vue中,,,需要:

  1. 编写子组件
  2. 在需要使用的父组件中通过import引入
  3. 在vue的components中注册
  4. 在模板中使用 
//子组件 bar.vue  
<template>  
  <div class="search-box">  
    <div @click="say" :title="title" class="icon-dismiss"></div>  
  </div>  
</template>  
<script>  
export default{  
props:{  
    title:{  
       type:String,  
       default:''  
      }  
    }  
}, 
 
methods:{  
    say(){ 
        console.log('明天不上班');  
       this.$emit('helloWorld')  
    }  
} 
</script>  
 
// 父组件 foo.vue  
<template>  
  <div class="container">  
    <bar :title="title" @helloWorld="helloWorld"></bar>  
  </div>  
</template>  
 
<script>  
import Bar from './bar.vue'  
export default{  
data:{  
    title:"我是问题"  
},  
methods:{  
    helloWorld(){  
        console.log('我吸收到子组件转达的事务了')  
    }  
},  
components:{ 
     Bar  
}  
</script>  

在小程序中,,,需要:

1.编写子组件

2. 在子组件的json文件中,,,将该文件声明为组件

{  
  "component": true  
}  

3.在需要引入的父组件的json文件中,,,在usingComponents填写引入组件的组件名以及路径

"usingComponents": {  
    "tab-bar": "../../components/tabBar/tabBar"  
}  

4.在父组件中,,,直接引入即可

<tab-bar currentpage="index"></tab-bar> 

详细代码:

// 子组件  
<!--components/tabBar/tabBar.wxml-->  
<view class='tabbar-wrapper'>  
  <view class='left-bar {{currentpage==="index"?"active":""}}' bindtap='jumpToIndex'>  
    <text class='iconfont icon-shouye'></text>  
    <view>首页</view>  
  </view>  
  <view class='right-bar {{currentpage==="setting"?"active":""}}' bindtap='jumpToSetting'>  
    <text class='iconfont icon-shezhi'></text>  
    <view>设置</view>  
  </view>  
</view>  

2.父子组件间通讯

在vue中

父组件向子组件转达数据,,,只需要在子组件通过v-bind传入一个值,,,在子组件中,,,通过props吸收,,,即可完成数据的转达,,,示例:

// 父组件 foo.vue  
<template>  
  <div class="container">  
    <bar :title="title"></bar>  
  </div>  
</template>  
<script>  
import Bar from './bar.vue'  
export default{  
data:{  
    title:"我是问题"  
},  
components:{  
    Bar  
}  
</script>  
 
// 子组件bar.vue  
<template>  
  <div class="search-box">  
    <div :title="title" ></div>  
  </div>  
</template>  
<script>  
export default{  
props:{  
    title:{  
       type:String,  
       default:''  
      }  
    }  
}  
</script>  

子组件和父组件通讯可以通过this.$emit将要领和数据转达给父组件。。。

在小程序中

父组件向子组件通讯和vue类似,,,可是小程序没有通过v-bind,,,而是直接将值赋值给一个变量,,,如下:

<tab-bar currentpage="index"></tab-bar> 

此处,,, “index”就是要向子组件转达的值

在子组件properties中,,,吸收转达的值

properties: {  
    // 弹窗问题  
    currentpage: {            // 属性名  
      type: String,     // 类型(必填),,,现在接受的类型包括:String, Number, Boolean, Object, Array, null(体现恣意类型)  
      value: 'index'     // 属性初始值(可。。。,若是未指定章会凭证类型选择一个 
    } 
}  

子组件向父组件通讯和vue也很类似,,,代码如下:

//子组件中  
methods: {     
    // 转达给父组件  
    cancelBut: function (e) {  
      var that = this;  
      var myEventDetail = { pickerShow: false, type: 'cancel' } // detail工具,,,提供应事务监听函数  
      this.triggerEvent('myevent', myEventDetail) //myevent自界说名称事务,,,父组件中使用  
    }, 
}  
//父组件中  
<bar bind:myevent="toggleToast"></bar>   
// 获取子组件信息  
toggleToast(e){  
    console.log(e.detail)  
}  

若是父组件想要挪用子组件的要领

vue会给子组件添加一个ref属性,,,通过this.$refs.ref的值便可以获取到该子组件,,,然后便可以挪用子组件中的恣意要领,,,例如:

//子组件  
<bar ref="bar"></bar>  
//父组件  
this.$ref.bar.子组件的要领  

小程序是给子组件添加id或者class,,,然后通过this.selectComponent找到子组件,,,然后再挪用子组件的要领,示例:

//子组件  
<bar id="bar"></bar>  
// 父组件  
this.selectComponent('#id').syaHello()  

以上就是这篇vue与微信小程序的区别,,,各人有注重到吗?? ????

小程序工具提供多类型商城/门店小程序制作,,,可视化编辑 1秒天生5步上线。。。通过拖拽、拼接?? ????榻峁剐〕绦蛏坛且趁妫,所看即所得,,,只需要美工就能做出细腻商城。。。更多小程序市肆请审查:小程序市肆

vue和微信小程序的区别、较量

 


【本站声明】
  1、本站文章中所选用的图片及文字泉源于网络以及用户投稿,,,由于未联系到知识产权人或未发明有关知识产权的挂号,,,若有知识产权人并不肯意我们使用,,,若是有侵权请连忙联系。。。
  2、本网站差池文章中所涉及的内容真实性、准确性、可靠性认真,,,仅系客观性形貌,,,如您需要相识该类商品/服务详细的资讯,,,请您直接与该类商品/服务的提供者联系。。。


KESION pp电子软件

KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。

KESION 一直通过手艺立异,,,提供产品和服务,,,助力企业向数字化转型,,,通过科技驱动商业刷新,,,让商业变得更智慧!



▼点击进入pp电子官网相识更多



上/下篇
  • 美食菜谱类微信小程序的设计与开发之搜索组件

  • 微信小程序打包插件开发体验

换一换相关推荐
精选内容
热门精选
pp电子·模拟器(试玩游戏)官方网站 pp电子·模拟器(试玩游戏)官方网站 pp电子·模拟器(试玩游戏)官方网站
【网站地图】
vue和微信小程序的区别、较量 - KESION pp电子