简而言之,所有的框架都是建立在原生javascript基础之上的,所以对于有一定js基础的同学来说,各种框架都是比较容易入手的,但不同的框架之间又有一定的差别,有时候切换使用时就会掉入坑了。

一、微信小程序有自己封装的一套组件视图容器,它把平时我们可能会用的一些页面视图效果都进行了分装;

eg:  swiper,scroll-view,表单组件

在Vue项目中,我们可能要通过引入第三方组件库swiper,表单组件更多的是结合element-ui或者ant-ui 或者 iview 来实现表单页面的实现。

二、条件渲染与列表渲染

在js中我们都知道,用于条件判断,用的最多的就是if(){}else{},而在vue和微信小程序框架中,它对该类方法进行了封装,通过指令调用方式来实现。

vue中:

v-if="Math.random() > 0.5"或者v-if=”true”  //当指令的表达式返回 truthy 值的时候内容会被渲染

习惯于vue框架的人,长时间没接触微信小程序的后果:

wx-if=”Math.random() > 0.5”   //报错倒是不会,但是并没有按条件执行

然后执行,完全没毛病是不是,可是数据就是出不来,我曾经反反复复检查了好几遍代码,自信绝对没问题,再去console后台数据,返现数据是可以console出来的,才惊觉可能是微信小程序的条件渲染不对,然后查看微信小程序文档才发现,在微信里面,都是通过

{{ }} 的语法把一个变量绑定到界面上的,正确操作

wx-if=” {{ Math.random() > 0.5 }}” 或者 wx-if=”{{true}}” 

vue中列表渲染时,

<p v-for=”(index,item) in array” :key=”item.id”></p>;

微信小程序中,在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。

默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item;

<view wx:for="{{array}}">
{{index}}: {{item.message}}
</view>

使用 wx:for-item 可以指定数组当前元素的变量名,

使用 wx:for-index 可以指定数组当前下标的变量名:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
{{idx}}: {{itemName.message}}
</view>

三、数据获取

vue实例化后,初始化data,通过this.能获取到data内的数据,正常操作:

data(){
return {
message:””
}
}, methods:{
change:function(){
this.message = “呵呵哒”
} }

小程序中,初始化页面数据之后,是通过this.data来获取页面的data来获取页面对象的,同样操作,

data:{
message:”呵呵”
},
methods:{
this.data.message = “呵呵哒”; //视图界面上的值并没有发生改变
}

先不说一不小心this.message,后来幡然醒悟过来这是小程序,那么,问题又来了,视图界面上的值并没有发生变化。

再去查询文档(来自微信小程序官方文档说明):

1、直接修改 this.data 无效,无法改变页面的状态,还会造成数据不一致。

2、单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

3、this.data与this.setData的关系就是this.setData里面存储的是this.data的副本,而界面是从this.setData里面托管的this.data的副本取数据的。所以我们更改this.data并不会直接更新界面,因为这个时候的this.setData里面的副本还是没有更新前的。

简而言之,就是,setData 函数刷新数据并展示在页面上,this.data改变了数据,但是不会改变视图页面的内容。

所以,正确操作

methods:{
this.data.message = “呵呵哒”;
this.setDate({
message:this.data.message
});
console.log(this.data.message)
}

四、顺道记下vue中$set的使用

在vue开发过程中,当vue实例创建之后再去添加新的给数据添加新的属性时,会发现数据并没有自动更新到视图上去。

原因:受现代 JavaScript 的限制,Vue 不能检测到对象属性的添加或删除。vue实例化数据项时,会通过Object.defineProperty的getter和seter方法对数据进行module层和view层数据的相应和改变。所以,所以属性必须在 data 对象上存在才能让 Vue 转换它

解决方法:

Vue.set( target, key, value );

参数:

{Object | Array} target

{string | number} key

{any} value

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新,它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性。

data(){
return{
stuff:{
name:”xiaoling”,
age:”28”
}
}
}, methods:{
change:function(){
this.sex=”女”; // 不会在页面上看到修改效果
this.$set(stuff,“sex”,”女”) //完美
}
}

五、记录一下神坑

微信小程序官方文档:微信小程序页面路径只能是五层,应尽量避免多层级的交互方式;所以当我们使用wx.navigateTo跳转的正开心突然不能跳转的时候,不要怀疑人生,微信做了限制,可以通过使用wx.redirectTo来实现但是redirect设置关闭了当前页,页面返回效果就没有了,还是要看交互最终的效果是否可行。

微信小程序与vueJs的异同的更多相关文章

  1. SAP UI5和微信小程序对比之我见

    今天继续由SAP成都研究院著名的菜园子小哥Wang Cong,给大家分享他作为一个SAP前端人员是如何看待SAP UI5和微信小程序的异同点的. 关于Wang Cong种菜的手艺,大家请移步到他以前的 ...

  2. 微信小程序初探

    做为码农相信大家最近肯定都会听到微信小程序,虽然现阶段还没有正式开放注册,但大家可以还是可以开发测试. 到微信的WIKI(http://mp.weixin.qq.com/wiki?t=resource ...

  3. 微信小程序:开发之前要知道的三件事

    前言 微信之父张小龙在年初的那次演讲中曾表示:"我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情".几个月后,微信正式推出微信应用号(即微信小程序),在互联网中掀起了又 ...

  4. 微信小程序框架探究和解析

    何为框架 你对微信小程序的技术框架了解多少? 对wepy 框架进行一系列的深入了解 微信小程序框架解析和探究 小程序组件化框架WePY 在性能调优上做出的探究 开发者培训班上海专场PPT分享:小程序框 ...

  5. 微信小程序学习笔记以及VUE比较

    之前只是注册了一下微信小程序AppID,随便玩了玩HelloWorld!(项目起手式),但是最近看微信小程序/小游戏,崛起之势不可阻挡.小程序我来了!(果然,一入前端深似海啊啊啊啊啊~) 编辑器: S ...

  6. 微信小程序开发总结(一)

    微信小程序从2016年9月21日开始内测 ,以及在2017年1月9号正式发布也有一段时间了, 很多人开始拥抱微信小程序,我也是一样 ,从微信小程序内测开始就加入进来 , 开始研究微信小程序 ,属于最早 ...

  7. 微信小程序开发语言的选择

    微信使用的开发语言和文件很「特殊」. 小程序所使用的程序文件类型大致分为以下几种: ①WXML(WeiXin Mark Language,微信标记语言) ②WXSS(WeiXin Style Shee ...

  8. MPVUE - 使用vue.js开发微信小程序

    MPVUE - 使用vue.js开发微信小程序 什么是mpvue? mpvue 是美团点评前端团队开源的一款使用 Vue.js 开发微信小程序的前端框架.框架提供了完整的 Vue.js 开发体验,开发 ...

  9. 微信小程序云开发

    什么是云开发? 云开发是由腾讯云联合微信团队为开发者提供的 包含 云函数.云数据库和云文件存储能力的后端云服务 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 A ...

随机推荐

  1. 2015湖南湘潭 D 二分

    2015湖南湘潭第七届大学生程序设计比赛 D题 Fraction Accepted : 133   Submit : 892 Time Limit : 1000 MS   Memory Limit : ...

  2. 修改python ide的主题,颜色

    1.找到这个名叫config-highlight.cfg文件后接下来就需要编辑它了 2. 贴上: [Obsidian] definition-foreground = #678CB1 error-fo ...

  3. form 表单添加 enctype ="multipart/form-data" 属性后后台接收中文乱码

    解决办法: new String( request.getParameter("title").getBytes("ISO-8859-1"),"utf ...

  4. C++/C头文件 .h和 .c

    在C语言家族程序中,头文件被大量使用.一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成.头文件作为一种包含功能函数.数据接口声明的 ...

  5. opp小节

    本章总结 练习题 面向对象三大特性,各有什么用处,说说你的理解. 类的属性和对象的属性有什么区别? 面向过程编程与面向对象编程的区别与应用场景? 类和对象在内存中是如何保存的. 什么是绑定到对象的方法 ...

  6. HDU 2546 饭卡 (01背包问题)

    题意:中文的吧,飘过~ 析:学过DP的都应该感觉到是动态规划吧,就是一个01背包问题,不同的是,这个题又加入一些新的条件,就是不满5元不能消费,过了5元即使超了也行(这个学校真不错,都可以预支),最后 ...

  7. HDU 1513 && POJ 1159 Palindrome (DP+LCS+滚动数组)

    题意:给定一个字符串,让你把它变成回文串,求添加最少的字符数. 析:动态规划是很明显的,就是没有了现思路,还是问的别人才知道,哦,原来要么写,既然是回文串, 那么最后正反都得是一样的,所以我们就正反求 ...

  8. Java_得到GET和POST请求URL和参数列表

    一. 获取URL: getRequestURL()(还有个getRequestURI(),只取后面部分) 二. 获取参数列表: 1.getQueryString() 只适用于GET,比如客户端发送ht ...

  9. html自适应布局,@media screen,媒体查询

    html自适应布局,@media screen,媒体查询 自适应代码示例: <!doctype html> <html> <head> <meta chars ...

  10. oracle11g 导出空表

    --对已存在的表 执行如下 ,要经过统计分析后 num_rows=0 才准确select 'alter table '||table_name||' allocate extent;' from us ...