当前位置: 首页 > Web前端 > HTML

vue和微信小程序的区别和比较

时间:2023-04-02 21:22:26 HTML

在前言中写了vue项目和小程序,发现两者有很多相似之处。这里我想总结一下两者的共性和差异。相比之下,小程序的钩子函数就简单多了。自己写了vue项目和小程序,发现它们有很多相似之处。这里我想总结一下两者的共性和差异。1.生命周期先贴两张图:vue生命周期小程序生命周期相比之下,小程序的hook函数就简单多了。vuehook函数在跳转到新页面时,会触发hook函数,但是小程序的hook函数,页面的不同跳转方式,触发的hook是不一样的。onLoad:页面加载时只会调用一次,打开当前页面调用的查询参数可以在onLoad中获取。onShow:每次打开页面都会调用页面显示。onReady:页面初始渲染后,一个页面只会被调用一次,表示页面准备就绪,可以与视图层进行交互。wx.setNavigationBarTitle等界面设置请在onReady之后设置。详见生命周期onHide:切换navigateTo或bottomtab时页面隐藏时调用。onUnload:在redirectTo或navigateBack时页面卸载时调用。数据请求页面加载时请求数据,这两个钩子的使用有些类似。Vue一般在created或者mounted中请求数据,而在小程序中则是在onLoad或者onShow中请求数据。2、数据绑定VUE:Vue动态绑定一个变量值到元素的一个属性时,会在变量前加一个冒号:例:1.小程序:当值一个变量绑定到一个元素属性,它将被括在两个大括号中。如果没有大括号,它将被视为一个字符串。例子:1.3.列表渲染直接贴代码,两者还是有点类似vue:1.2.3.{{item.消息}}4.5.7.varexample1=newVue({8.el:'#example-1',9.data:{10.items:[11.{message:'Foo'},12.{message:'Bar'}13.]14.}15.})applet:1.Page({2.data:{3.items:[4.{message:'Foo'},5.{message:'Bar'}6.]7.}8.})10.{{item}}四、显示与隐藏elements在vue中,使用v-if和v-show控制元素的显示和隐藏在小程序中,使用wx-if和hidden控制元素的显示和隐藏五、事件处理vue:使用v-on:event绑定事件,或者使用@event绑定事件,例如:1.Add12.Add1//防止事件冒泡在小程序中,使用bindtap(bind+event)或catchtap(catch+event)绑定事件,例如:1.No明天上班2.明天不上班//防止事件冒泡六、双向数据绑定1、在vue中设置值,只需要在form元素中添加v-model,然后在data中绑定一个对应的值。当表单元素的内容发生变化时,data中对应的值也会随之变化,这是vue非常好的一点1.2.3.

5.newVue({6.el:'#app',7.data:{8.reason:''9.}10.})但是在小程序中,没有这个功能。那我们该怎么办呢?当表单内容发生变化时,会触发表单元素上绑定的方法,然后在该方法中通过this.setData({key:value})将表单上的值赋值给data中对应的值。下面是代码,大家感受一下:1.2.Page({3.data:{4.reason:''5.},6.bindReason(e){7.this.setData({8.reason:e.detail.value9.})10.}11.})当页面中的表单元素很多时,更改值是一项手工工作。与小程序相比,vue的v-model简直酷毙了,没必要。2.在vue中,在小程序中使用this.reason获取值,使用this.data.reason获取值。在方法中,将需要传入的数据作为形参传入即可,例如:1.2.newVue({3.el:'#app',4.methods:{5.say(arg){6.consloe.log(arg)7.}8.}9.})在小程序中,不能直接绑定事件在methods中要传入一个参数,需要将参数作为属性值绑定到元素上的data-attribute上,然后在方法中,通过e.currentTarget.dataset.*来获取,从而完成传参转账,是不是很麻烦?..1。2.Page({3.data:{4.reason:''5.},6.toApprove(e){7.letid=e.currentTarget.dataset.id;8.}9.})8.父子组件通信1.Vue中子组件的使用需要:编写子组件是在需要使用的父组件中通过import引入,在vue的组件中注册,在模板中使用1.//子组件bar.vue2.7.25.//父组件foo.vue26.32.在小程序中,需要:1.编写子组件2.在子组件的json文件中,声明文件为component1.{2."component":true3.}3.在需要导入的父组件的json文件中,在usingComponents中填写导入组件的组件名称和路径1."usingComponents":{2."tab-bar":"../../components/tabBar/tabBar"3.}4.在父组件中直接导入即可1.具体代码:1.//子组件2.3.4.5.6.首页7.8.9.10.设置11.12.2.父子组件之间的通信。在vue中,父组件向子组件传递数据。只需要在子组件中通过v-bind传入一个值,在子组件中通过props接收即可。完成数据传输,例子:1.//父组件foo.vue2.7.18.//子组件bar.vue19.24.子组件与父组件的通信可以将方法和数据传递给父组件在小程序中,父组件和子组件的通信类似于vue,但是小程序不通过v-bind,而是直接给一个变量赋值,如下:1.此处,"index"是要传递给子组件的值。在子组件属性中,接收传入的值1.properties:{2.//弹窗标题3.currentpage:{//属性名4.type:String,//类型(必填),目前接受的类型包括:String,Number,Boolean,Object,Array,null(表示任意类型)5.value:'index'//属性初始值(可选),不指定则按类型取一个6.}7.}子组件与父组件的通信类似于vue,代码如下:1.//在子组件中2.methods:{3.//传递给父组件4.cancelBut:function(e){5.varthat=this;6.varmyEventDetail={pickerShow:false,type:'cancel'}//detail对象,提供给事件监听函数7.this.triggerEvent('myevent',myEventDetail)//Myevent自定义名称事件,在parent中使用component8.},9.}10.//父组件中11.12.//获取子组件信息13.toggleToast(e){14.console.log(e.detail)15.}如果父组件要调用子组件的方法,vue会给子组件添加一个ref属性,通过this.$refs.ref的值可以得到子组件,然后可以调用子组件中的任何方法,例如:1.//子组件2.3.//父组件4.This.$ref.bar.子组件的方法小程序就是给子组件添加一个id或者class,然后通过this.selectComponent找到子组件,然后调用子组件的方法,例子:1.//Subcomponent2.3.//父组件4.this.selectComponent('#id').syaHello()小程序和vue在这一点上太像了,有木有。.九、还有很多废话没写出来,以后再补充和简化。感觉自己写的有点多余,请勿喷!!!原文地址:https://segmentfault.com/a/11...更多参考最后还是自己码了个中文地图SVG前戏——让你的View多姿多彩分享几个Android非常强大的开源Framegold9silver10interviewgolden季节,分享几个重要的面试问题