微信小程序学习

本文详细介绍了微信小程序的代码组成部分,包括JSON配置的作用和语法、WXML模板的逻辑与渲染以及WXSS样式的使用。重点讲解了数据绑定、条件逻辑、列表渲染和选择器等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第2章 小程序代码组成

JSON配置

作用

JSON为一种数据格式,在小程序中用作静态配置。

语法

{
  "pages":[                     //"key":"value" ,以键值对形式存在,且双引号不能少
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{                                //window,设置窗口界面的属性
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }
}

JSON无法使用注释,此处为理解代码添加注释。

JSON的值只能是一下格式:
1.数字,包含浮点数和整数
2.字符串,需要包裹在双引号中
3.Bool值,true 或者 false
4.数组,需要包裹在方括号中 []
5.对象,需要包裹在大括号中 {}
6.Null

WXML模板

作用

WXML全程WeiXin Markup Language, 是小程序框架设计的一套标签语言,结合小程序基础组件、时间系统,可以构建出页面的结构。

语法

<标签 属性名1="属性值1" 属性名2="属性值2" ...> ...</标签>

基本语法

标签之间可以嵌套,常用<view>...</view>作为嵌套的外层。

数据绑定

WXML通过{{变量名}}来绑定WXML文件和对应JavaScript文件中的data对象属性。

<text data-test="{{var2}}">...{{var1}}...</text>

js文件中data对象属性:

page({
    data: {
        time:(new Date()).toString(),
        var1:"输出:",
        var2:undefined,
        var3:null,
        var4:"4"
      }
})
逻辑语法

{{变量名}}中可以进行简单的逻辑运算。
三元运算

<text>{{ a === 10? "变量 a 等于10": "变量 a 不等于10"}}</text>

算数运算

<view> {{a + b}} + {{c}} + d </view>
条件逻辑

{{变量名}}中可以设置条件逻辑。

<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>

标签可以被<block >...</block>嵌套,从而实现整体逻辑判断。

<block wx:if="{{true}}">
  <view> view1 </view>
  <view> view2 </view>
</block>
列表渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

<!-- array 是一个数组 -->
<view wx:for="{{array}}">
  {{index}}: {{item.message}}
</view>

对应的js文件

Page({
    data: {
        array: [{
          message: 'foo',
        }, {
          message: 'bar'
        }]
    }
})

使用wx:for-index指定数组当前下标的变量名,使用wx:fonr-item指定数组当前元素的变量名.

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
  {{idx}}: {{itemName.message}}
</view>
  • 关于wx:key的使用(一篇解释得不错的文章)
    当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
模板
WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。通过is属性赋值模板名来选择渲染的模板,并通过data=”{{var1,var2,var3…}}”来进行多个数据的绑定
<template name="msgItem">
  <view>
    <text> {{index}}: {{msg}} </text>
    <text> Time: {{time}} </text>
  </view>
</template>

<template is="msgItem" data="{{index,msg,time}}"/>
当js文件中没有data对象时,可以在WXML的标签中使用“`{{变量名:’变量值’}}“`进行数据绑定,且该种方式数据优先级高于js文件中数据。
<template is="msgItem" data="{{index:'9',msg,time}}"/>
引用
WXML提供两种文件的引用方式:
  • import
    该方式能引用其他WXML文件,并能使用其中定义的template。
    但该方式无递归性,即不能引用其他WXML文件中import的template。

  • include
    该方法相当于拷贝目标WXML文件中除<template/> 和 <wxs/>的代码。

共同属性
属性名类型描述注解
idString组件的唯一标识整个页面唯一
classString组件的样式类在对应的WXSS中定义的样式类
styleString组件的内联样式可以动态设置的内联样式
hiddenBoolean组件是否显示所有组件默认显示
data-*Any自定义属性组件上触发的事件时,会发送给事件处理函数
bind*/catch*EvenHandler组件的事件

WXSS样式

WXSS(WeiXin Style Sheets)是一套用于小程序的样式语言,用于描述WXML的组件样式。(类似于CSS)

文件组成

  • 项目公共样式:
    根目录/app.wxss

  • 页面样式:
    在app.json中注册了的页面,pages/注册页面/注册页面.wxss

  • 其他样式:
    可被项目公共样式和页面样式引用。

尺寸单位

在WXSS中,引入rpx(responsive pixel)尺寸单位,该尺寸单位使不同宽度的屏幕的元素在屏幕中拥有相同的比列。

在一个宽度为375物理像素的屏幕下, 1rpx = px。
rpx换算px(屏幕宽度/750)   /   px换算成rpx(750/屏幕宽度)

WXSS引用

在WXSS中引用其他WXSS@import './test_0.wxss'

由于WXSS最终会被编译打包到目标文件中,用户只需要下载一次,在使用过程中不会因为样式的引用而产生多余的文件请求。

内联样式

WXSS内联样式与Web开发一致:

<!--index.wxml-->

<!--内联样式-->
<view style="color: red; font-size: 48rpx"></view>

小程序支持动态更新内联样式:

<!--index.wxml-->

<!--可动态变化的内联样式-->
<!--
{
  eleColor: 'red',
  eleFontsize: '48rpx'
}
-->
<view style="color: {{eleColor}}; font-size: {{eleFontsize}}"></view>

选择器

类型选择器样例样例描述
类选择器.class.intro选择所有拥有 class=”intro”的组件
id选择器idfirstname选择拥有id=”firstname”的组件
元素选择器elementview checkbox选择所有文档的view组件和所有的checkbox组件
伪元素选择器::afterview::after在view组件后边插入内容
伪元素选择器::beforeview::before在view组件前边插入内容

WXSS优先级与CSS类似,权重如图2-13所示:

WXSS选择器优先级权重

view{ // 权重为 1
  color: blue
}

.ele{ // 权重为 10
  olor: red
}

#ele{ // 权重为 100
  color: pink
}

view#ele{ // 权重为 1 + 100 = 101,优先级最高,元素颜色为orange
  color: orange
}

view.ele{ // 权重为 1 + 10 = 11
  color: green
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值