微信小程序

微信小程序简介:

微信 小程序,简称 小程序 ,英文名 Mini Program ,是一种不需要下载安装即可使用的 应用 ,它实现
了应用 触 手 可 及 的梦想,用户扫一扫或搜一下即可打开应用
小程序开发:
微信官方文档地址: https://developers.weixin.qq.com/miniprogram/dev/framework/
微信小程序起步
1.1注册微信小程序账号
注册教程 : 参考小程序注册及开发工具安装 .PPT
此处,留出 15 分钟时间给学生注册账号
1.2获取appid
教程参考小程序注册及开发工具安装 .PPT
1.3下载开发工具
推荐下载和安装最新的稳定版( Stable Build )的微信开发者工具,下载页面的链接如下:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
安装步骤参考:小程序注册及开发工具安装 .PPT
1.4创建一个小程序
1.4.1创建步骤
创建步骤参考:小程序注册及开发工具安装 .PPT
1.4.2小程序目录结构
(1)基本结构
 

 (2)小程序页面组成部分

小程序官方建议把所有小程序的页面,都存放在pages 目 录 中

 

1.5josn配置文件

1.5.1json配置文件作用

josn是一种数据格式在实际开发中,JSON 总是以配 置 文 件的形式出现。小程序项目中也不例 外:通过不同的 .json配置文件,可以对小程序项目进行不同级别的配置。

1.5.2app.json

app.json 是当前小程序的 全 局 配 置 ,包括了小程序的 所 有 页 面 路 径 、 窗 口 外 观 、 界 面 表 现 、 底 部 等。 Demo 项目里边的 app.json 配置内容如下:

 语法及指令

wxml语法

data定义数据

pages({ data:{} })

渲染

<view>{{要绑定的数据名称}}</view>

mustache

1.绑定内容

定义数据

pages({ data:{info:'hello world' } })

渲染

<view>{{ info }}</view>

2.属性绑定:图片

pages({ data:{ imgSrc:'http://61.182.100.50:8999/images/index_new/d_banner_school.gif' } })

调用图片

<!--mode = "widthFix" 表示图片宽度固定,高度自适应--> <image src="{{imgSrc}}" mode="widthFix"></image>

3.三元运算

data 中定义一个 10 以内的随机数
pages({ data:{randNumber:Math.random()*10 // 生成10以内的随机数 } })

数据渲染

<view>{{randNumber >=5 ?'随机数大于或等于5':'随机数小于5'}}</view>

4.算数运算

js定义数据

pages({ data:{randNumber:Math.random().toFixed(2) // 生成一个带两位效数的随机数 } })

数据渲染

<view>{{ randNumber* 100 }}</view>

5.总结

不论以上哪种数据方式绑定,都可以执行一些简单的表达式,不可知性语句块

条件渲染

1.wx:if

在小程序中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块
<!--页面结构中代码 condition为data中定义的数据(一般为布尔型数据)--> <view wx:if="{{condition}}">true</view>

2.wx:elif

当有多个条件时,可配合 wx:if 指令 完成业务逻辑
<view wx:if="{{type1 ===1}}">男</view> <view wx:elif="{{type1 ===2}}">女</view> <view wx:else>保密</view>
注意:花括号与双引号之间不要有空格
3.wx:else
wx:if 指令一起使用,表示 wx:if 条件为假的时候显示的内容
<view wx:if="{{condition}}">true</view> <view wx:else>false</view>

4.block标签

如果要 一 次 性 控 制 多 个 组 件 的 展 示 与 隐 藏 ,可以使用一个 <block></block> 标签将多个组件包装 起来,并在 标签上使用 wx:if 控制属性,示例如下:
<block wx:if="true"> <view>组件1</view> <view>组件2</view> </block>
注 意    <block> 并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲
染。
5.hidden
在小程序中,直接使用 hidden="{{ condition }}" 也能控制元素的显示与隐藏:
<view hidden="{{condition}}"> 条件为true 隐藏,条件为 false 显示 </view>

6.wx:if与hidden的对比

运行方式不同
wx:if以动 态 创 建 和 移 除 元 素 方式,控制元素的展示与隐藏
hidden 以切 换 样 式 (display:none/block;),控制元素的显示与隐藏
使用建议
频 繁 切 换时,建议使用hidden
控 制 条 件 复 杂 时,建议使用wx:if
搭配 wx:elif 、 wx:else 进行展示与隐藏的切换

列表渲染

  wx:for 基础用法
通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构,语法示例如下:
<view wx:for="{{arr}}"> <text>当前循环的值为:{{item}},索引为:{{index}}</text> </view>
手动指定索引和当前项的变量名
使用 wx:for-index可以指定当 前 循 环 项 的 索 引的变量名
使用 wx:for-item可以指定当 前 项 的变量名
<view wx:for="{{arr}}" wx:for-item="list" wx:for-index="i"> <text>当前循环的值为:{{list}},索引为:{{i}}</text> </view>
wx:key 的使用
类似于 Vue 列表渲染中的 :key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定
唯一的 key 值,从而提 高 渲 染 的 效 率,示例代码如下:
<view wx:for="{{arr}}" wx:for-item="list" wx:for-index="i" wx:key="i"> <text>当前循环的值为:{{list}},索引为:{{i}}</text> </view>

事件绑定

1. 什么是事件
事件是渲 染 层 到 逻 辑 层 的 通 讯 方 式 。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业 务的处理

2. 小程序中常用的事件

 

3. 事件对象的常用属性列表

 

4. targetcurrentTaget区别

target 是触 发 该 事 件 的 源 头 组 件 ,而 currentTarget 则是当 前 事 件 所 绑 定 的 组 件 。举例如下: 

5. bindtap语法格式

<button type="primary" bindtap="testTap">tap事件</button> // 页面js中的代码 pages({ data:{}, testTap(){ console.log('测试事件') }})
pages({ testTap(e){ console.log(e) } })

 6. setData方法

通过调用 this.setData(dataObject)方法,可以给页面 data 中的数据重新赋值,示例如下:
pages({ data:{count:1; },// 用于触发某个事件时,调用的方法 changeCount(){ // 通过this.setData() 修改data中的值 this.setData({ count:this.data.count + 1 // 修改count变量值 }) } })
7. 事件传参
<!--错误的传参方法--> <button type="primary" bindtap="testTap(123)">事件传参</button>
<button bindtap="btnHandler" data-info="{{2}}">事件传参</button>
在事件处理函数中,通过event.target.dataset. 参 数 名 即可获取到具 体 参 数 的 值,示例代码如下:
btnHandle(event){ // dataset 是一个对象,包含了所有通过data-*传递过来的参数项 console.log(event.target.dataset) // 通过dataset 可以访问到具体参数的值 console.log(event.target.dataset.info) }
8. bindinput 语法格式
<input bindinput="inputHandle"></input>
inputHandle(e){ // e.detail.value 是变化过后,文本最新的值 console.log(e.detail.value) }
9. 案例: input data 数据同步
描述: input 框中输入的内容与 data 中定义的数据保持同步
案例分析
① 在 data 中定义保持同步的变量
② 将 data 中的数据渲染到页面结构中
③ 页面样式优化
④ 绑定 input 事件处理函数
绑定的处理函数中获取输入框的值,并通过 setData() 修改 data 变量值
代码展示
1. 页面 .wxml 文件代码
<input type="text" bindinput="inputHandle" /> <view>输入框中的值:{{inp}} </view>
2. 页面 .wxss 文件代码
input{margin-top: 10rpx; border:1px solid #f00; }
3. 页面 .js 文件代码
pages({ data:{inp:'' }inputHandle(e){ // 获取输入框中输入的数据 var newValue = e.detail.value; this.setData({ inp:newValue }) })

WXSS模板样式

1. WXSS CSS 的关系
WXSS 具有 CSS 大部分特性,同时, WXSS 还对 CSS 进行了扩充以及修改,以适应微信小程序
的开发。与 CSS 相比, WXSS 扩展的特性有:
rpx 单位
@import 样式导入
rpx 尺寸单位
rpx(responsive pixel)是微信小程序独有的,用来解 决 屏 适 配 的 尺 寸 单 位 。
rpx的实现原理
rpx 的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx 把所有
设备的屏幕,在宽 度 上 等 分 为 750份 (即:当 前 屏 幕 的 总 宽 度 为750rpx
)。
在较小的设备上,1rpx 所代表的宽度较小
在较大的设备上,1rpx 所代表的宽度较大
小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实
现屏幕适配
rpx与px之间的单位换算
在 iPhone6 上,屏幕宽度为375px,共有750个 物 理 像 素,等分为750。则:
750rpx=375px=750物 理 像 素
1rpx=0.5px=1物 理 像 素

 样式导入

/** common.css **/ .small-p{ padding:5px; }/** app.wxss **/ @import "common.wxss"; .middle-p{ margin:15px; }
1. 全局样式
定义在
中的样式为全 局 样 式 ,作用于每一个页面。
2. 局部样式
在页 面 的
文件中定义的样式为局 部 样 式 ,只作用于当前页面。
注意:
① 当局部样式和全局样式冲突时,根据就 近 原 则 ,局部样式会覆盖全局样式
② 当局部样式的权 重 大 于 或 等 于 全局样式的权重时,才会覆盖全局的样式

配置项介绍

全局配置

小程序根目录下的app.json文件是小程序的全 局 配 置 文 件 。常用的配置项如下:
pages 记录当前小程序所有页面的存放路径
window全局设置小程序窗口的外观
tabbar设置小程序底部的tabbar效果
style 是否启用新版的组件样式

 配置项-window

window节点常用的配置项

配置项 -tabbar
tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。小程序中通常将其分为:
底部 tabBar
顶部 tabBar

 

 

tabBar 中只能配置最少 2 个,最多 5 tab 页签
当渲染顶部 tabBar 时,不显示 icon ,只显示文本
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值