微信小程序基础篇-模板与配置

news2024/11/19 19:01:03

本篇学习目标

使用WXML渲染模板语法渲染页面结构

使用WXSS样式美化结构

使用app.json对项目进行全局配置

使用page.json对页面进行个性化配置

如何发起网络请求

1.WXML模板语法

1.1 数据绑定

在data中定义数据:在页面的js文件在data对象中定义

在wxml中使用数据:使用Mustach语法{{}}

<text>{{info}}</text>
const util = require('../../utils/util.js')

Page({
  data: {
    info: '天天开心呀'
  },

1.1.1Mustach语法

运用场景

  • 绑定内容

  • 绑定属性

  • 运算:三元运算、算数运算

<!--pages/demo1/demo1.wxml-->
<view>{{info}}</view>
<image src="{{imgsrc}}" mode="widthFix"/>
<view>{{num >100?'大于100':'小于100'}}</view>
Page({

    /**
     * 页面的初始数据
     */
    data: {
        info: '今天是周五啦!',
        imgsrc: '/images/gh_615d8db53f16_258.jpg',
        num: 10,
    },
})

1.2 事件绑定

事件是渲染层到逻辑层的通讯方式,用户在渲染层的行为,反馈到业务层处理

1.2.1 小程序中常用的事件

1.2.2 事件对象的属性列表

触发事件时会接收一个event对象,属性如下

target和 detail常用

1.2.3 事件绑定

  • target 和currentTarget的区别

target是触发事件的源头事件,currentTarget是当前事件所绑定的组件

如下e.target 是触发button,e.currentTarget触发的是view组件(常用)

<view bindtap="outerhandel">
    <button>按钮</button>
</view>
  • bingtab 的语法格式

在小程序中,没有onClick鼠标点击事件,通过tab事件响应触摸行为

在js文件中定义时间的处理函数,参数通过形参event(简写e)来接收

<view>
    <button bindtap="handelBtn">按钮</button>
</view>
    // 事件绑定
    handelBtn(e){
        console.log("e",e);
    },
  • 事件处理函数中data中数据赋值

通过调用this.setData(dataObject)方法给data数据重新赋值

    data: {
        num: 10,
    },
    // 事件绑定
    handelBtn(e){
        console.log("e",e);
        this.setData({
            num: this.data.num + 1,
        })
        console.log("num值",this.data.num);
    },

  • 事件传参

在小程序中,不能在绑定事件的同时为事件处理函数传递参数

传参:使用data-xxx={{x}}自定义属性传参,xxx是参数名称

接收参数:event.target.dataset.参数名

注意:参数只可以小写!

 <button bindtap="handelBtn" data-param="2">按钮</button>
  handelBtn(e){
        console.log("参数",e.target.dataset.param);
    },
  • bindinput 语法

获取值:e.detail.value

  • 文本框与data之间的数据同步

步骤:定义数据-渲染结构-美化样式-绑定input事件函数

<input type="text" bindinput="handelInput" value="{{inputInfo}}"/>
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 定义数据
        inputInfo: 'hello'
    },
    // 绑定事件
    handelInput(e){
        this.setData({
            inputInfo: e.detail.value
        })
    },

1.3 条件渲染wx:if

1.3.1 基本使用

可以通过wx:if / wx: else / wx: elif 进行条件判断

data: {
        score: 84,
    },
<!-- 条件渲染 -->
<view wx:if="{{score > 60 && score <80}}">及格</view>
<view wx:elif="{{score < 90}}">良好</view>
<view wx:else>优秀</view>

1.3.2 结合<block>使用

如果一次性控制多个组件的显示和隐藏,使用<block>标签将多个组件包装起来,并在标签里使用wx:if

注意:<block>并不是一个组件,只是一个包裹性容器,不会在页面中渲染,相当于vue的template

<block wx:if="true">
    <view>早上好鸭</view>
    <view>lisa</view>
</block>

1.3.3 hidden

使用hidden可以控制元素显示隐藏,与vue中display:hidden相似

<view hidden="{{msg}}">放假</view>

1.3.4 wx:if 和 hidden 的区别

①运行方式不同

wx:if 动态创建和移除元素控制,hidden切换样式的方式来控制

②使用建议

hidden:用于频繁切换时,wx:if 用于条件判断比较复杂时

1.4 列表渲染 wx:for

1.4.1基本使用

wx:for 根据数组,渲染重复组件

默认情况下,循环索引用index,循环项用item表示

<view wx:for="{{list}}">
    {{index}}<text>{{item}}</text>
</view>

1.4.2 自定义索引名和变量

索引名:wx: for-index='name'

变量: wx: for-item='xxx

1.4.3 wx:key 的使用

建议使用列表渲染时,配合wx:key="xxx"使用,提高渲染效率

 data: {
        listData: [
            {
                name:'lisa',
                id: 1
            },,
            {
                name:'rose',
                id: 2
            }
        ]
    },
<view wx:for="{{listData}}" wx:key="id">
    {{index}}<text>{{item.name}}</text>
</view>

注意:如果有id就用id做完key值,如果无则使用index做为key值

    • WXSS模板语法

2.1wxss与css的关系

wxss是一套样式语言,类似css

wxss具有css大部分特性,对css进行扩充和修改

拓展特性有:rpx单位,@import样式引入

2.1.1rpx 单位

rpx 是小程序独有的,解决屏幕适配尺寸单位

实现原理:根据屏幕大小不同,rpx在宽度把屏幕分成750等份,在不同设备的1rpx宽度不同

建议在开发时使用iPhone6作为视觉稿的标准

2.1.2 @import 样式导入

@import后需要导入的外联样式表的相对路径,用;表示结束

import @common/common.wxss

3. 全局配置

3.1全局样式和局部样式

  • 全局样式:app.wxss,作用于全部页面

  • 局部样式:在页面中的.wxss文件,作用于当前页面

  • 当局部样式和全局样式冲突时,根据就近原则覆盖全局样式

  • 局部样式的权重>=全局样式的权重时,覆盖全局样式

3.2 全局配置

3.2.1 配置项

app.json是全局配置文件,常用配置项有以下:

  • pages:记录所有页面路径

  • window:全局设置小程序窗口外观

  • tabBar:底部的tabBar效果

  • style:是否启用新版的组件样式

3.2.2 小程序窗口组成成分

3.3.3 window 节点常用配置项

注意:导航栏颜色只支持16进制颜色

app.json下拉刷新作用每个页面,一般enablePullDownRefresh配置在局部json文件

3.3.4 tabBar

3.3.4.1 介绍

  • tabBar 实现移动端多页面的切换

  • 通常分为底部tabBar和顶部tabBar

  • tabBar 配置至少2个,至多5个tab页

  • 渲染顶部tabBar时,不显示icon,只显示文本

3.3.4.2 组成部分

  1. backgroundColor: tabBar 的背景色

  1. selectedIconPath:选中图片路径

  1. borderStyle:上边框的颜色

  1. iconPath:未选中的图标路径

  1. selectedColor:文字选中的严重

  1. color:未选中文字颜色

3.3.4.2 tabBar节点配置项

tabBar必须包含一个list数组

list数组里面只能放2-5个对象

    "tabBar": {
        "list": [
            {
                "pagePath": "pages/index/index",
                "text": "首页"
            },
            {
                "pagePath": "pages/logs/logs",
                "text": "日志"
            }
        ]
    },

3.3.4.3 每个tab项的配置项

4. 网络数据请求

4.1GET和POST请求

4.1.1 网络请求限制

因为安全性考虑,小程序对数据接口请求做出了以下2个限制:

  • 只能请求HTTPS类型的接口

  • 必须将接口的域名添加到信任列表中:在项目配置-域名配置里面设置

4.1.2 配置合法的域名

如果需要请求https://www.baidu.com/域名

配置步骤:登录微信小程序后台=>开发=>开发设置=>服务器域名设置=>修改request合法域名

注意事项

  • 域名只支持https协议

  • 域名不能使用ip地址或者localhost

  • 域名必须经过ICP备案

  • 服务器域名一个月内最多申请5次

4.1.3 发起get请求

调用微信小程序wx.request()方法,发起get数据请求

<button bindtap="getHandle">发送get请求</button>
//   发起get请求
  getHandle(){
    wx.request({
      url: 'https://www.baidu.com',
      method:'get',
      data: {
          name: 'z'
      },
      success:(res)=>{
        console.log(res.data);
      }
    })
  },

4.1.4 发起post请求

<button bindtap="postHandle">发送post请求</button>
    //   发送post请求
    postHandle(){
        wx.request({
            url: 'https://www.baidu.com',
            method: 'POST',
            data: {
                msg:'hello'
            },
            success: (res) => {
                console.log(res);
            }
        })
    },

5.1.5在页面刚加载时请求数据

在页面加载时自动请求一些初始化数据,需要用页面onLoad事件调用获取数据的函数

onLoad() {
    this.postHandle()
  },

4.2请求注意事项

4.2.1跳过request合法域名校验

如果后端只有http协议接口,在微信开发者工具:详情-本地设置-勾选不合法域名,即可使用

注意:仅限在开发测试时使用,不能在部署发布时使用

4.2.2 关于跨域和Ajax说明

跨域问题仅存在web开发,小程序的宿主环境是微信客户端,不存在跨域问题

Ajax技术的核心是依赖于浏览器中的对象,因为小程序的宿主环境是微信客户端,使用小程序不能叫“发起Ajax请求”,而是叫“发起网络请求”

注:笔记来源于黑马程序员

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次Windows Terminal的安装和配置

换的原因 之前一直用的cmder&#xff0c;结果突然一次更新之后&#xff0c;delete文本后显示文本错误&#xff0c;于是就换成Window Terminal了 安装 进微软商店搜或者官网跳转到微软商店 下载完后在winr里用wt可以进入 配置外观 配置&#xff08;因为我是已经配好再写博客…

【微服务笔记05】微服务组件之Ribbon负载均衡器组件介绍及其使用

这篇文章&#xff0c;主要介绍微服务组件之Ribbon负载均衡器及其使用。 目录 一、Ribbon负载均衡器 1.1、负载均衡介绍 &#xff08;1&#xff09;负载均衡概念 &#xff08;2&#xff09;负载均衡分类 &#xff08;3&#xff09;Ribbon负载均衡思想 1.2、Ribbon的使用 …

Mybatis一发入魂

文章目录Mybatis官方中文文档一、Mybatis简介二、简单入门使用2.1、在pom.xml中添加依赖2.2、使用xml配置文件2.3、创建接口2.4、创建映射文件2.6、获取sqlsession实例并执行方法三、Mybatis的Xml配置文件3.1、properties属性3.2、settings设置3.3、typeAliases类型别名3.4、en…

试题 基础练习 高精度加法(java)

试题 基础练习 高精度加法提交此题 评测记录 资源限制内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s问题描述输入两个整数a和b&#xff0c;输出这两个整数的和。a和b都不超过100位。算法描述由于a和b…

《架构300讲》学习笔记(151-200)

前言 内容来自B站IT老齐架构300讲内容。 151 Redis发布订阅机制是如何实现的&#xff1f; 152 阿里Seata分布式事务AT、TCC、SAGA、XA模式到底该怎么选&#xff1f; 153 超级实用&#xff01;十分钟掌握Prometheus与Grafana监控SpringBoot应用 154 如何利用Docker快速构建…

Java面试题每日10问(7)

Core Java - OOPs Concepts: final keyword Interview Questions 1. What is the final variable? the final variable is used to restrict the user from updating it.If we initialize the final variable, we can’t change its value.The final variable - which is not…

论文阅读笔记《Multilevel Graph Matching Networks for Deep Graph Similarity Learning》

核心思想 本文提出一种多级图匹配网络&#xff08;MGMN&#xff09;用于图相似性的度量。常见的图相似性网络都是利用图神经网络或其他图嵌入技术将整幅图转化为特征向量&#xff0c;然后计算两个特征向量之间的相似程度。这种做法的缺点在于只关注了图一级的信息交互&#xff…

【随风丶逆风】2022年终总结

前言 又到了一年一度的年终总结了&#xff0c;回顾一年可谓一波三折&#xff0c;感慨良多&#xff0c;最有感触的大概就是疫情带来各种影响吧&#xff0c;经济下行、市场不景气、互联网寒冬。 回顾去年年终规划《【随风丶逆风】2021年终总结》&#xff0c;整体低于预期&#x…

ArcGIS基础实验操作100例--实验83查找点集中最近最远点

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验83 查找点集中最近最远点 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

1.Linux库详解

Hello&#xff0c;小伙伴们&#xff0c;大家好&#xff01;最近有小伙伴问我程序库相关的问题。程序库的存在很大程度上提高了程序的复用性、可维护性&#xff0c;但是程序库的应用往往对于初学者来说有些摸不清头脑&#xff0c;所以这一期本文从Linux的角度谈谈Linux下的程序库…

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (二)异步复位的串联T触发器

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 &#xff08;二&#xff09;异步复位的串联T触发器 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN博客 &#x1f9e8;未经作者允许&#xff0c;禁止转载 &#x1f511;系列专栏&#xff1a…

算法之拓扑关系

目录 前言&#xff1a; 算法解析 Kahn算法 DFS算法 总结&#xff1a; 参考资料 前言&#xff1a; 如何确定代码源文件的编译依赖关系&#xff1f; 我们知道&#xff0c;一个完整的项目往往会包含很多代码源文件。编译器在编译整个项目的时候&#xff0c;需要按照依赖关…

4-大规模城市场景建模与理解

方向&#xff1a;三维重建 题目&#xff1a;大规模城市场景建模与理解 作者&#xff1a;陈宝权 万国伟 山东大学 关键词&#xff1a;场景重建 场景理解 自动扫描 智能建模 来自&#xff1a;中国计算机学报通讯 12卷 8期 2016.08 期刊&#xff1a;https://github.com/Darr…

在智能家居音箱领域上的音频功放芯片IC

目前&#xff0c;音频功放芯片主要应用于手机、音响、车载、可穿戴设备、计算机设备、智能家居等领域。随着人机交互逐步落地&#xff0c;从应用广度上对音频功放芯片需求完全放开&#xff0c;截止2021年以“智能音箱”、“智能家居”为代表的音频智能终端也持续放量&#xff1…

Java开发学习(四十)----MyBatisPlus入门案例与简介

一、入门案例 MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提供效率。 SpringBoot它能快速构建Spring开发环境用以整合其他技术&#xff0c;使用起来是非常简单&#xff0c;对于MybatisPlus&#xff0c;我们也基于SpringBoot来构建…

掌握流量密码五要素,抓住底层逻辑,让你更容易获得流量

分享一篇关于流量的文章&#xff1a;流量是一切赚钱项目中最重要的一个要素没有流量&#xff0c;赚钱就是空谈。流量多就赚的多&#xff0c;流量少就赚的少&#xff0c;没有流量就没得赚。因为流量非常重要&#xff0c;所以要打造私域用户池&#xff0c;让流量变成留量。私域用…

微信小游戏开发学习记录2

接上一篇&#xff1a;微信小游戏开发学习记录_寂静流年韶华舞的博客-CSDN博客_微信小游戏开发学习 目录 一、UI系统 1、基础渲染组件-精灵组件 &#xff08;1&#xff09;操作&#xff1a; &#xff08;2&#xff09;Sprite 属性 &#xff08;3&#xff09;渲染模式 2、L…

Qt基于CTK Plugin Framework搭建插件框架--事件监听

文章目录一、前言二、框架事件三、插件事件四、服务事件五、添加事件监听一、前言 CTK一共有三种事件可以监听&#xff1a; 框架事件插件事件服务事件 但是这些事件只有在变化时才能监听到&#xff0c;如果已经变化过后&#xff0c;进入一个稳定的状态&#xff0c;这时才去监…

Android Studio实现一个新闻APP系统源码,仿网易,搜狐等新闻客户端,本科毕业设计必备项目

DavidTGNewsProject ##【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端 完整代码下载地址&#xff1a;Android Studio实现一个新闻APP系统源码 先给大家看一下效果图&#xff1a; 这个项目总体来说虽然不是特别难&#xff0c;但是确实非常常用的功能。是业余时间…

wordcloud | 词云 in python

wordcloud | 词云&#x1f928;wordcloud | 词云&#x1fae1;词云是啥&#x1f636;‍&#x1f32b;️词云的历史&#x1f914;安装 wordcloud 包&#x1f60e;官方文档&#x1f923;一个最简单的例子&#x1f44d;运行结果&#x1f60a;感谢&#x1f928;wordcloud | 词云 赢…