目标

  • 能够使用 WXML 模板语法渲染页面结构
  • 能够使用 WXSS 样式美化页面结构
  • 能够使用 app.json 对小程序进行全局性配置
  • 能够使用 page.json 对小程序页面进行个性化配置
  • 能够知道如何发起网络数据请求

讲解目录

  • 1.WXML 模板语法
  • 2.WXSS 模板样式
  • 3.全局配置
  • 4.页面配置
  • 5.网络数据请求
  • 6.案例 - 本地生活(首页)
  • 7.总结

1.WXML 模板语法

1.1.数据绑定

小程序中, 数据绑定分为2个步骤:
① 在 data 中定义数据
② 在 WXML 中使用数据

1.在 data 中定义页面的数据

在页面对应的 .js 文件中,把数据定义到 data 对象中即可

Page({
/** 页面的初始数据 */
data: { info: 'Hello World', // 如果是短横线的形式声明数据,需要使用双引号包裹 "user-name": 'XX'
},
/**
生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
})

2.在 WXML 中使用数据

把data中的数据绑定到页面中渲染,使用 Mustache 语法(双大括号)将变量包起来即可。语法格式为

<!-- 插值表达式/大胡子语法 -->
<view>{{ info }}</view>

通过这两个步骤, 就可以将数据绑定到页面中进行展示.
下面对 Mustache 语法的应用场景进行介绍:
Mustache 语法的主要应用场景如下:

  • 绑定内容
    数据如下

    Page({data: {info: 'init data' }
    })
    

    界面如下

    <view>{{info}}</view>
    
  • 绑定属性
    数据如下
    页面如下:

    Page({data: {imgSrc: 'http://www.itheima.com/images/logo.png'
    }
<!-- 动态绑定数据 -->
<image src="{{ imgSrc }}" mode="widthFix"></image>

运算(三元运算、算术运算等)
数据如下:
页面的结构如下:

注意: 在小程序中, 无论是标签的属性还是标签的内容, 都是使用Mustache 语法进行数据绑定, 这和 Vue有些差别, 在 Vue 中, 标签的属性是通过 v-bind ,标签的内容是通过 Mustache 语法.

1.2.事件绑定

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理
小程序中常用的事件如下

当事件回调触发的时候,会收到一个事件对象 event ,它的详细属性如下表所示:

我们主要关注 target 和 detail 这两个属性
关于 target 属性, 它经常会和 currentTarget 容易混淆

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

1.2.1. bindtap 的使用

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为。具体步骤如下:
① 通过 bindtap ,可以为组件绑定 tap 触摸事件

② 在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event (一般简写成 e ) 来接收, 注意,事件处理函数需要和 data 平级

1.2.2.js 中访问 data 中的数据

在 js 代码中, 如果想要访问 data中 的数据, 是通过 this.data.xxx 的方式进行访问

1.2.3. js 中修改 data 中的数据

通过调用 this.setData(dataObject) 方法,可以给页面 data 中的数据重新赋值,示例如下:

1.2.4.事件传参

小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。
例如,下面的代码将不能正常工作:

因为小程序会把 bindtap 的属性值,统一当作事件名称来处理,相当于要调用一个名称为btnHandler(123) 的事件处理函数。

我们可以为组件提供 data-* 自定义属性传参,其中 * 代表的是参数的名字,示例代码如下:

最终:
info 会作为名字存储在事件对象的 target 中的 dataset 中, 2 会被解析为值
在事件处理函数中,通过 event.target.dataset.info 即可获取到值,示例代码如下:

1.2.5. bindinput 的使用

在小程序中,通过 input 事件来响应文本框的输入事件,具体的使用步骤如下:
① 通过 bindinput ,可以为文本框绑定输入事件:

② 在页面的 .js 文件中定义事件处理函数:

1.2.6.实现小程序中的双向数据绑定

实现步骤:
① 定义数据
② 渲染结构, 绑定 data 中的数据
③ 美化样式
④ 监听 input 事件
具体代码如下:
定义数据:

渲染结构:将data中的 msg 绑定到输入框的 value 属性

美化样式:

监听 input 事件:

1.3.条件渲染

在小程序中,使用 wx:if=“{{condition}}” 来判断是否需要渲染该代码块
也可以配合 wx:elif 和 wx:else 来添加 else 判断:

1.3.1.结合 使用 wx:if

如果要一次性控制多个组件的展示与隐藏,可以使用一个 标签将多个组件包装起来,并在
标签上使用 wx:if 控制属性,使用block标签进行包裹,只是包裹性值,不会再页面渲染,类似于template 标签示例如下:

注意: 并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染

1.3.2. hidden

在小程序中,直接使用 hidden=“{{ condition }}” 也能控制元素的显示与隐藏:

1.3.3. wx:if 与 hidden 的对比

① 运行方式不同

  • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
  • hidden 以切换样式的方式( display: none/block; ),控制元素的显示与隐藏

② 使用建议

  • 频繁切换时,建议使用 hidden
  • 控制条件复杂时,建议使用 wx:if 搭配 wx:elif 、 wx:else 进行展示与隐藏的切换

1.4.列表渲染

在小程序中, 可以通过 wx:for 指定数组,进行循环渲染重复的组件结构,语法示例如下:

默认情况下,当前循环项的索引用 index 表示;当前循环项用 item 表示。
我们也可以手动指定索引和当前项的变量名

  • 使用 wx:for-index 可以指定当前循环项的索引的变量名
  • 使用 wx:for-item 可以指定当前项的变量名

示例代码如下

2 …WXSS 模板样式

WXSS ( WeiXin Style Sheets )是一套样式语言,用于美化 WXML 的组件样式,类似于网页开发中的
CSS 。
WXSS 具有 CSS 大部分特性,同时, WXSS 还对 CSS 进行了扩充以及修改,以适应微信小程序的开发。
与 CSS 相比, WXSS 扩展的特性有:
rpx 尺寸单位
@import 样式导入

2.1. rpx

  1. 什么是 rpx 尺寸单位
    rpx ( responsive pixel )是微信小程序独有的,用来解决屏适配的尺寸单位。
  2. rpx 的实现原理
    rpx 的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配, rpx 把所有设备的屏幕

在宽度上等分为 750 份, 1份就是1 rpx , 所以:

  • 在较小的设备上,1 rpx 所代表的宽度较小
  • 在较大的设备上,1 rpx 所代表的宽度较大

小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实现
屏幕适配。

2.2.样式导入

使用 WXSS 提供的 @import 语法,可以导入外联的样式表。
@import 后跟需要导入的外联样式表的相对路径,用分号 ; 表示语句结束。示例如下:

2.3.全局样式和局部样式

  1. 全局样式
    定义在 app.wxss 中的样式为全局样式,作用于每一个页面。
  2. 局部样式
    在页面的 . wxss 文件中定义的样式为局部样式,只作用于当前页面。

注意:
① 当局部样式和全局样式冲突时,根据 就近原则 ,局部样式会覆盖全局样式
② 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式

3.全局配置

3.1.全局配置文件及常用的配置项

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

3.2. window

  1. 小程序窗口的组成部分

    • 导航栏 - 顶部导航栏区域
    • 背景区 - 默认不可见,下拉才显示
    • 页面主体区 - 页面主体用来显示 wxml 中的布局

具体示意图如下:
2.了解 window 节点常用的配置项

2. 设置导航栏的标题
设置步骤: app.json ->window -> navigationBarTitleText
3. 设置导航栏的背景色
设置步骤: app.json -> window -> navigationBarBackgroundColor
4. 设置导航栏的标题颜色
设置步骤: app.json -> window -> navigationBarTextStyle
5. 全局开启 下拉刷新 功能
下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。
设置步骤: app.json -> window -> 把 enablePullDownRefresh 的值设置为 true

3.3. tabBar

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

  • 底部 tabBar
  • 顶部 tabBar

注意:

  • tabBar 中只能配置最少 2 个、最多 5 个 tab 页签
  • 当渲染顶部 tabBar 时,不显示 icon ,只显示文本
  1. tabBar 的 6 个组成部分
    ① backgroundColor : tabBar 的背景色
    ② selectedIconPath :选中时的图片路径
    ③ borderStyle:tabBar 上边框的颜色
    ④ iconPath :未选中时的图片路径
    ⑤ selectedColor:tab 上的文字选中时的颜色
    ⑥ color:tab 上文字的默认(未选中)颜色
    具体示意图如下:

  2. tabBar 节点的配置项

  3. 每个 tab 项的配置选项

4.页面配置

  1. 页面配置文件的作用
    小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面的窗口外观、页面效果等进行配
    置。
  2. 页面配置 和 全局配置 的关系
    小程序中, app.json 中的 window 节点,可以全局配置小程序中每个页面的窗口表现。
    如果某些小程序页面想要拥有特殊的窗口表现,此时,页面级别的 .json 配置文件就可以实现这种需
    求。
    注意:当页面配置与全局配置冲突时,根据就近原则,最终的效果以页面配置为准。
  3. 页面配置中常用的配置项
    注意:
    ① 这些配置项, 在刚才学习的全局配置下的 window 节点我们已经都学习过了,无需额外记忆.
    ② 一般我们不需要每个页面都有下拉刷新的效果,因此,再全局配置文件中,不推荐全局配置下拉刷新,而是某个列表页面需要开启时,在页面配置文件中,单独开启下拉刷新

5.网络数据请求

如何在小程序中发起网络请求?
该请求不能称作ajax请求,但是可以称为网络请求
准备工作:
考虑安全性,微信官方要求域名使用 https协议
配置后台的request的合法域名
具体代码如下
小程序中的网络请求不存在跨域的问题

  1. 小程序中网络数据请求的限制
    出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下
    两个限制:
    ① 只能请求 HTTPS 类型的接口
    ② 必须将接口的域名添加到信任列表中

  2. 配置 request 合法域名
    需求描述:假设在自己的微信小程序中,希望请求 https://www.escook.cn/ 域名下的接口
    配置步骤:登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名
    注意事项:
    ① 域名只支持 https 协议
    ② 域名不能使用 IP 地址或 localhost
    ③ 域名必须经过 ICP 备案
    ④ 服务器域名一个月内最多可申请 5 次修改

  3. 发起 GET 请求
    调用微信小程序提供的 wx.request() 方法,可以发起 GET 数据请求,示例代码如下:

  4. 发起 POST 请求
    调用微信小程序提供的 wx.request() 方法,可以发起 POST 数据请求,示例代码如下

  5. 在页面刚加载时请求数据
    在很多情况下,我们需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的
    onLoad 事件中调用获取数据的函数,示例代码如下:

  6. 跳过 request 合法域名校验
    如果后端程序员仅仅提供了 http 协议的接口、暂时没有提供 https 协议的接口。
    此时为了不耽误开发的进度,我们可以在微信开发者工具中,临时开启「开发环境不校验合法域名、
    web-view(业务域名)、 TLS 版本及 HTTPS 证书」选项,跳过 request 合法域名的校验。

    注意:
    跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用!

  7. 关于 跨域 和 Ajax 的说明
    跨域问题只存在于基于浏览器的 Web 开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小
    程序中不存在跨域的问题。
    生命周期函数–监听页面加载–初始化页面的数据 */ onLoad: function (options) { // 通过 this 关键字 调用上述两个方法 // 可以自动发起请求,而不需要点击事件来触发 this.onTapGet() this.onTapPost() }, 123456789
    Ajax 技术的核心是依赖于浏览器中的XMLHttpRequest 这个对象,由于小程序的宿主环境是微信客户端,所以小程序中不能叫做“发起 Ajax 请求”,而是叫做“发起网络数据请求”。

6.案例-本地生活

  1. 首页效果以及实现步骤
    ① 新建项目并梳理项目结构
    ② 配置导航栏效果
    ③ 配置 tabBar 效果
    ④ 实现轮播图效果
    ⑤ 实现九宫格效果
    ⑥ 实现图片布局

  2. 接口地址
    ① 获取轮播图数据列表的接口
    【GET】https://www.escook.cn/slides
    ② 获取九宫格数据列表的接口
    【GET】https://www.escook.cn/categories

  3. 完整代码
    wxss 样式


    wxml 布局

    js 逻辑


7.总结

① 能够使用 WXML 模板语法渲染页面结构
wx:if 、 wx:elif 、 wx:else 、 hidden 、 wx:for 、 wx:key
② 能够使用 WXSS 样式美化页面结构
rpx 尺寸单位、 @import 样式导入、全局样式和局部样式
③ 能够使用 app.json 对小程序进行全局性配置
pages 、 window 、 tabBar 、 style
④ 能够使用 page.json 对小程序页面进行个性化配置
对单个页面进行个性化配置、就近原则
/*** 生命周期函数–监听页面加载 */ onLoad: function (options) { // 初始化页面,调用方法 this.getSwiperList() this.getGirdList() },// 获取轮播图数据的方法 getSwiperList () { // 发起请求 wx.request({ url: ‘https://www.escook.cn/slides’, method: ‘GET’, success: (res) => { // console.log(res) // 修改data中的数据 this.setData({ swiperList: res.data }) } }) },// 获取九宫格数据的方法 getGirdList () { wx.request({ url: ‘https://www.escook.cn/categories’, method: ‘GET’, success: (res) => { // console.log(res) // 修改data中的数据 this.setData({ girdList: res.data }) } }) }, 1112131415161718192021222324252627282930313233343536373839404142434445464748
⑤ 能够知道如何发起网络数据请求
wx.request() 方法、 onLoad() 事件

微信小程序基础(全家福02)相关推荐

  1. 微信小程序基础(全家福01)

    微信小程序基础 目标 能够知道如何创建小程序项目 能够清除小程序项目的基本组成结构 能够知道小程序页面有几个部分组成 能够知道小程序中常见的组件如何使用 能够知道小程序如何进行协同开发和发布 讲解目录 ...

  2. 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;

    需求场景:微信小程序不少API都有最低版本支持,为了避免不必要的麻烦,我们可以根据需要给小程序设置基础库最低版本,这样若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新微信 ...

  3. 《微信小程序-基础篇》初识微信小程序

    大家好,好久不见了,前段时间各种原因分享不稳定,后面一段时间内参与了主站的原力计划,请麻烦各位支持一下,万分感谢- 本系列将从零开始介绍微信小程序的开发,介绍完基础以后会实际同步开发一个微信小程序的项 ...

  4. 微信小程序基础库的问题

    微信小程序基础库的问题 很多刚开始开发小程序的开发者经常会遇到在开发者工具的模拟器里面可以正常使用小程序的某个API,但是在预览(真机测试)时打开调试发现使用的API报错,但是开发工具里面的基础库是支 ...

  5. 微信小程序--基础内容(详解)(一)

    一.常用标签 1.view 标签 view 标签是一个块级元素,类似于 div(小程序里面没有div标签),里面可以放任何内容或者插值表达式,如下所示: <view>这是view标签< ...

  6. 微信小程序 基础语法

    微信小程序 基础语法 官网:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/ .wxml文件中 列表渲染 <view ...

  7. 微信小程序基础学习笔记Day02

    学习目标:微信小程序基础Day02 今日目标: 能够使用 WXML 模板语法渲染页面结构 能够使用 WXSS 样式美化页面结构 能够使用 app.json 对小程序进行全局性配置 能够使用 page. ...

  8. 视频教程-2020最新微信小程序基础+实战精讲视频-微信开发

    2020最新微信小程序基础+实战精讲视频 负责过多个软件项目的研发.设计和管理工作,拥有项目管理师认证.项目监理师中级认证.出版过的图书有<微信小程序开发图解案例教程><Axure ...

  9. 小程序用户头像昵称获取规则调整公告及微信小程序基础库的问题

    更新时间:2022年11月9日 由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问题,对于来自低于2.27.1版本的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头 ...

  10. 小程序学习 - 01小程序简介+微信小程序基础

    小程序简介 小程序是一个全新的.轻量级的移动端应用. 起源 在小程序出现之前的移动端开发的解决方案有: Android iOS Windows Phone - 后来退出历史舞台 移动端开发发展了一段时 ...

最新文章

  1. [转]Java8-本地缓存
  2. 怎么删除结构体数组中的一组数据_数据结构-栈
  3. windows查看java进程详细信息的几种方法
  4. 个人博客建站方案推荐
  5. 采用 J2EE 的公司正在考虑改用 Microsoft .NET ?
  6. java 实例 登录用户 equals的用法
  7. Ai极限真的存在吗?
  8. 对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。...
  9. 大数据架构师必读的NoSQL建模技术
  10. React Router 全部
  11. CentOS 升级现有PHP版本
  12. android的got表HOOK实现
  13. JAVA数据结构之红-黑树
  14. android camera 全屏,Android Camera做全屏预览之最简单方法.doc
  15. 搭建自己的Linux根文件系统
  16. 数据可视化——R语言绘制散点相关图并自动添加相关系数和拟合方程
  17. 血氧仪电路方案开发--PCBA方案
  18. Android webView长按保存图片到本地相册(队列下载实现)
  19. Java实现 LeetCode 403 青蛙过河
  20. GIS的核心价值——服务

热门文章

  1. 大数据处理实践探索 ---- 笔试面试题:ElasticSearch
  2. mt4如何自动选择最快服务器,【快速查看mt4服务器ip地址----最简单的方法】
  3. 【全网最全】Ubuntu基本操作——磁盘空间不足与扩容问题集锦
  4. 2022年中级会计实务考试精选模拟题及答案
  5. 26、资金管理-账户管理
  6. 《JAVA与模式》26天系列—第12天—享元模式=单例模式+工厂模式+合成模式
  7. 7系列PCIe IP核用户手册(中文)
  8. java ip正则表达式_java如何用正则表达式判断IP格式
  9. 牛客练习赛13 幸运数系列
  10. 基于Basys3设计的多功能电子琴