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

先贴两张图:
vue生命周期

小程序生命周期

相比之下,,,小程序的钩子函数要简朴得多。。。
vue的钩子函数在跳转新页面时,,,钩子函数都会触发,,,可是小程序的钩子函数,,,页面差别的跳转方式,,,触发的钩子并纷歧样。。。
一个页面只会挪用一次,,,可以在 onLoad 中获取翻开目今页面所挪用的 query 参数。。。
每次翻开页面都会挪用一次。。。
一个页面只会挪用一次,,,代表页面已经准备稳当,,,可以和视图层举行交互。。。
对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。。。详见生命周期
当navigateTo或底部tab切换时挪用。。。
当redirectTo或navigateBack的时间挪用。。。
数据请求
在页面加载请求数据时,,,两者钩子的使用有些类似,,,vue一般会在created或者mounted中请求数据,,,而在小程序,,,会在onLoad或者onShow中请求数据。。。
VUE:vue动态绑定一个变量的值为元素的某个属性的时间,,,会在变量前面加上冒号:,,,例:
<img :src="imgSrc"/>
小程序:绑定某个变量的值为元素属性时,,,会用两个大括号括起来,,,若是不加括号,,,为被以为是字符串。。。例:
<image src="{{imgSrc}}"></image>
直接贴代码,,,两者照旧有些相似
<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> //阻止事务冒泡
在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简直爽的不要不要的。。。
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;
}
})
在vue中,,,需要:
//子组件 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>
父组件向子组件转达数据,,,只需要在子组件通过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步上线。。。通过拖拽、拼接??????榻峁剐〕绦蛏坛且趁妫,所看即所得,,,只需要美工就能做出细腻商城。。。更多小程序市肆请审查:小程序市肆

KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。KESION 一直通过手艺立异,,,提供产品和服务,,,助力企业向数字化转型,,,通过科技驱动商业刷新,,,让商业变得更智慧!
美食菜谱类小程序很是受到微信小程序开发的接待,,,由于小程序的用完即走,,,轻盈无需下载,,,随时可以在小程序中搜索不知道的菜谱,,,好比下厨房也开发了关于的美食菜谱小程序,,,那么关于美食...
微信官方已经开放了插件的共享,,,那么关于微信小程序开发来说,,,怎样做到小程序打包插件呢??????下面来看看文章。。。...