4 微信小程序基础使用篇2

微信小程序中没有dom结构,所以操作dom元素从而改变样式,进行逻辑操作也无从谈起,小程序巧妙使用的“数据绑定”/数据驱动,这种思想也是我们学习微信小程序的原因; ->所谓dom结构,即html元素,小程序中使用的wxml,wxss.wxs,js;

1、数据渲染 -> 双大括号插值语法 -> 标签内容,属性值中都可使用,{{}}中也可进行基本操作;

<view>{{message}}</view>

<image src="{{}}"/>;//属性值中使用必须加引号(补充:vue中不能识别,其必须使用v-bind绑定属性)

<view>{{a + b}} + {{c}} + d</view>;//简单运算

<view hidden="{{flag ? true : false}}"></view>;//三目运算

<view wx:if="{{length > 5}}"></view>;//逻辑判断

<view>{{ "hello" + name}}</view>;//字符串运算

数据路径运算:

2、条件渲染: 

(1).wx:if=“{{}}”, wx:elif="{{}}", wx:else;//条件渲染的基础使用;<block>标签其不是组件,也没有实际意义,最终也不会渲染到页面上,其可将多个组件进行包裹,节省代码的书写,提高开发效率;(补充:vue中使用的是<template>标签);-> <block/> 只接受控制属性

(2).wx:if;wx:elif;wx:else;切换过程中会进行销毁和重新渲染,hidden;//组件都会被渲染,只是控制显示和隐藏(display:none/block;); -> 频繁切换使用hidden, 运行条件不经常改变,使用wx:if系列更nice;

3、列表渲染 -> wx:for="{{array}}",其遍历渲染数组,若遍历字符串、数字,系统会将其转换为数组然后进行遍历渲染;

(1).wx:for="{{array}}",标签内直接使用{{item}},{{index}}即可,其也可通过wx:for-index="xxx",wx:for-item="xxx",进行修改;<block>标签的使用同“条件渲染”中提到的相同;

(2).wx:key="";//其搭配wx:for="",系统渲染过程中可识别组件,不会反复创建,提高列表渲染时的效率;即使不使用wx:key,也并不影响程序正常运行,只会有“警告信息”而已;->wx:key="",确认属性值的两种情况(直接写wx:key="0",警告信息也会消失,建议使用下述两种方式)

[1].遍历后item为对象类型,item具有唯一标识的那个属性值(不能动态改变),例如wx:key="id";

[2].遍历后item为数字/字符串,wx:for="*this",

4、请求数据接口:wx:request({ url:'', success:function(data){ console.log(data) }})

5、生命周期函数、页面相关事件处理函数

(1).生命周期函数:onLoad -> onShow -> onReady

onLoad(){};//监听页面加载,其是最先触发的; -> 往往请求数据在此函数中执行;

onShow(){};//页面显示/切入前台时触发,页面显示的时刻触发;

onReady(){};//监听页面初次渲染完成;

onHide(){};//监听页面隐藏/切入后台; -> 例如wx.navigateTo({ url: }),其跳转到新页面会保留之前页面,当前页面隐藏时触发该函数;

onUnload(){};//监听页面卸载; ->例如wx.redirectTo({});其跳转到新页面会关闭当前页面,之前的页面被卸载掉了,此时其会触发该函数;

(2).页面相关事件处理函数:

onPullDownRefresh(){};//监听用户下拉动作;

onReachBottom(){};//页面上拉触底事件触发;

onShareAppMessage(){};//用户点击右上角分享时触发;

6、交互操作接口; -> wx.showLoading和wx.showToast不能同时使用(也没什么实际意义,功能重复了),wx.showLoading();与wx.hideLoading();配合使用,要不然不能关闭;

wx.showModal({});//模态对话框

wx.showToast({});//消息提示框 -> 其有保持时间,不调用wx.hideToast()也可关闭

wx.showLoading({});//显示loading提示框 ->相比于消息提示框有多种icon选择,其更加具体,只能显示loading图标,并且其需调用wx.hideLoading()才能关闭

wx.showActionSheet({});//显示操作菜单

7、巧妙利用事件对象e.currentTarget来传递数据;(e.target接收也OK,两者都有数据,建议第一种)

补充:小程序中的e.currentTarget与e.target的区别 ->主要应用场景便是“事件冒泡”,子元素事件触发冒泡从而触发父元素事件处理函数,父事件对象e.target指向为子元素,而e.currentTarget依旧是本身 -> e.currentTarget永远都指向本身,e.target若是冒泡,指向源对象(往往与事件委托结合使用)

8、实现“分享”功能 -> button组件的open-type属性(微信开放能力)

9、数据缓存接口 ->微信小程序中直接调用接口即可实现数据缓存 ->数据存储的生命周期与小程序生命周期一致,即用户手动删除或超过一定时间被自动清理,否则数据都一直可用,单个key允许存储最大数据长度为1M,所有数据存储上限为10M(一般数据缓存不可能超10M);

(1).wx.setStorage({});//配置项中以对象的形式添加键值对来设置缓存,wx.setStorageSync();//其直接添加key、value即可; -> 两者使用方式上有差异(其它接口也是如此)

(2).wx.setStorage();//异步版本,有sync标识的为同步版本(async:异步) -> 开发过程中建议使用同步

10、页面之间数据传递 -> wx.navigateTo({})传递数据 ->新页面中使用onLoad(options){},参数接收;

11、代码冗余度高 ->html、css、js -> css可提取公共样式,然后使用@import引入(引入时必须使用相对路径,而且末尾必须使用分号,否则报错);js部分可封装函数,然后引入;html只能冗余了 -> 后续组件化开发,每个组件都有单独的html/css/js,这样组件的复用效率极高,也是开发首选;    [补充:引入css,js的过程中必须使用相对路径,微信小程序中图片路径以及路由跳转中相对路径、绝地路径都可识别,建议开发中都采用“相对路径”,避免出错]

12、wxs脚本语言 -> 其是小程序自己的脚本语言

(1).其和js语言功能类似,两者可嵌套在同wxml中使用(不冲突),其有自己的规范,而且可使用es5.0,但不支持es6.0; ->其做数据预处理较方便,例如后端json数据中的时间,需要前端格式化

(2).页面嵌入式、外联式

(3).wxs中的正则表达式使用方法同js中不同 -> js: var reg = /\\n/g;//全局匹配\n,\\匹配到\; wxs中使用getRegExp();函数才OK; -> 首个参数为匹配的元素,第二个参数为属性

13、swiper轮播图组件 -> <swiper><swiper-item><image/></swiper-item></swiper>;//图片,文字都可进行轮播,该组件有很多属性,详情可参考文档;

14、video视频组件 -> <video src="{{src}}"></video>;//更多属性查看文档;->讲很常见的一类应用场景:设置视频封面 ->视频上覆盖图片(动图);                                                                                  

(1).video组件提供了poster属性,属性值为网络资源地址或云文件ID,而且controls属性必须为true,false设置无效; -> 即使设置了controls="true",视频封面依旧不能呈现;->其是微信小程序的bug,至今还没解决(社区中很多人都遇到该问题了); ->第(2)种解决方案

(2).直接在<video>标签之间写image标签,固定定位+z-index;即可实现覆盖; -> 有bug ->微信开发工具中其是覆盖到视频上的,但真机预览中图片始终在视频的下方,底层原因:微信小程序中的原生组件的层级是最高的(原生组件有很多限制条件); ->第(3)种解决方案

(3).使用<cover-view><cover-image>组件,其可覆盖在部分原生组件上;-> 两者都可单独使用,<cover-view>中可嵌套<cover-view>、<cover-image>以及其它组件;(样式操作同其它组件相同,其就是普通组件) 

- - - - -> <cover-image>组件不能识别.gif动图格式,即使开发工具中其正常显示动图,真机上动图却没效果,解决方案:还是使用image图片,image和video组件使用wx:if或者hidden属性来控制显示、隐藏;

15、audio音频组件 -> 1.6.0版本开始,该组件不再维护 ->提供了wx.createInnerAudioContext()音频接口(无控制面板)、wx.getBackgroundAudioManager();背景音频接口(存在控制面板,方便操作) -> 一般涉及到音频,也会用到进度条progress组件;

背景音频接口中若不设置title属性,报错信息如下:

progress组件应该可以做“个人技能”掌握情况的进度条

16、添加编译模式 -> 其可以很便捷的直接展示某页面,由于项目开发过程中很多都涉及到页面跳转,开发中若是进行某页面的操作,你需要从入口页面一级一级进行跳转,影响开发效率; -> 之前介绍过一种方法,app.json文件中操作pages对象中属性的顺序来展示你想要的页面; -> 添加编译模式这种方法更加便捷;

添加编译模式的方法:模式名称:自己写就OK;启动页面:配置页面路由;启动参数:该页面的特殊标识;(由于页面之间是相互跳转进入的,页面之间需要传递数据,否则打开页面也没有数据用来展示,所以微信小程序提供了“启动参数”,很nice的解决方案)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1.小程序起步 (1)点击https://mp.weixin.qq.com/wxopen/waregister?a...
    GXW_Lyon阅读 3,306评论 0 0
  • 因新工作主要负责微信小程序这一块,最近的重心就移到这一块,该博客是对微信小程序整体的整理归纳以及标明一些细节点,初...
    majun00阅读 7,312评论 0 9
  • 配置文件 app.json的配置(全局) {// 用来配置页面的路径"pages":["pages/index/i...
    Q轩哥阅读 27,081评论 2 31
  • 敬爱的李老师,智慧的班主任,亲爱的跃友们: 大家好!我是来自禾泉音琴行的管宝娇 今天是我的日精进行...
    百家筝鸣教务管老师阅读 92评论 0 0
  • 对中国传统文化了解的不多,很想去窥视她的神秘,但源于她的枯燥,现实社会的繁华,总无法静下心来去钻研。 谈到静心,人...
    士弘书法阅读 133评论 0 0