返回顶部
首页 > 资讯 > 精选 >微信小程序——语法篇
  • 812
分享到

微信小程序——语法篇

微信小程序小程序javascript 2023-08-19 06:08:39 812人浏览 安东尼
摘要

1.模板语法 WXML(WeiXin Markup Language)是框架设计的⼀套标签语⾔,结合基础组件、事件系统,可以构建出⻚⾯的结构。 1.1数据绑定 1.1.1普通写法 {{message}} Page({data:{messag

1.模板语法

WXML(WeiXin Markup Language)是框架设计的⼀套标签语⾔,结合基础组件、事件系统,可以构建出⻚⾯的结构。

1.1数据绑定

1.1.1普通写法

<view>{{message}}view>
Page({data:{message:'Hello World!'}})

1.1.2组件属性

<view id="item-{{id}}">view>
Page({    data: {        id: 0    }})

1.1.3bool类型

不要直接写checked=“false”,其计算结果是一个字符串

<checked checked="{{false}}"><checked>

1.2运算

1.2.1三元运算

<view hidden="{{flag?true:false}}">Hiddenview>

1.2.2算数运算

<view>{{a+b}}+{{c}}+d<view>
Page({data:{a:1,b:2,c:3}})

1.2.3逻辑判断

<view wx:if="{{length>5}}">view>

1.2.4字符串运算

<view>{{"hello"+name}}<view>
Page({data:{name:"mina"}})

1.2.5注意

花括号和引号之间如果有空格,将最终被解析成为字符串

1.3列表渲染

1.3.1wx:for

项的变量名默认为item wx:for-item 可以指定数组当前元素的变量名

下标变量名默认为index wx:for-index 可以指定数组当前下标的变量名

wx:key用来提高数组渲染的性能

wx:key绑定的值 有如下选择

string类型,表示循环项中的唯一属性 如

list:[{id:0,name:"炒饭"},{id:1,name:"炒面"}]wx:key="id"

保留字 *this,它的意思是item本身

*this代表的必须是唯一的字符串和数组

list:[1,2,3,4,5]wx:key="*this"

代码:

<view wx:for="{{array}}" wx:key="id"> {{index}}: {{item.message}}view>
Page({  data: {    array: [{      id:0,      message: 'foo',   }, {      id:1,      message: 'bar'   }] }})

1.3.2block

渲染一个包含多节点的结构块block最终不会变成真正的dom元素

<block wx:for="{{[1, 2, 3]}}" wx:key="*this" >  <view> {{index}}: view>  <view> {{item}} view>block>

1.4条件渲染

1.4.1wx:if

在框架中,使用wx:if="{{condition}}"判断是否需要渲染该代码块:

 <view wx:if="{{false}}">1view>  <view wx:elif="{{true}}">2view>  <view wx:else>3view>

1.4.2hidden

<view hidden="{{condition}}"> True view>

类似 wx:if

频繁切换用hidden

不经常使用用wx:if

2.小程序事件的绑定

小程序中绑定事件通过bind关键字来实现。如:bindtap、bindinput、bindchange等

不同的组件支持不同的事件,具体看组件的说明即可

2.1wxml

<input bindinput="handleInput" />

2.2page

Page({  // 绑定的事件  handleInput: function(e) {    console.log(e);    console.log("值被改变了"); }})

2.3特别注意

绑定事件是不能带参数 不能带括号 以下为错误写法

<input bindinput="handleInput(100)" />

事件传值 通过标签自定义属性的方式和value

<input bindinput="handleInput" data-item="100" />

事件触发时获取数据

  handleInput: function(e) {    // {item:100}   console.log(e.currentTarget.dataset)    // 输入框的值   console.log(e.detail.value); }

3.样式WXSS

WXSS( WeiXin Style Sheets )是⼀套样式语⾔,⽤于描述WXML的组件样式。

CSS 相⽐,WXSS 扩展的特性有:

响应式⻓度单位 rpx

样式导⼊

3.1尺寸单位

rpx (responsive pixel): 可以根据屏幕宽度进⾏⾃适应。规定屏幕宽为 750rpx 。如在iPhone6 上,屏幕宽度为 375px ,共有750个物理像素,则 750rpx = 375px = 750物理像 750rpx =375px = 750物理像素 , 1rpx = 0.5px = 1物理像素 ,1rpx = 0.5px = 1物理像素 。

设备rpx换算px(屏幕宽度/750)px换算rpx(750/屏幕宽度)
iphone51rpx=0.42px1px=2.34rpx
iphone61rpx=0.5px1px=2rpx
iphone6Plus1rpx=0.552px1px=1.81rpx

建议: 开发微信⼩程序时设计师可以⽤ iPhone6 作为视觉稿的标准。

使⽤步骤:

  1. 确定设计稿宽度 pageWidth

  2. 计算⽐例 750rpx = pageWidth px ,因此 1px=750rpx/pageWidth 。

  3. 在less⽂件中,只要把设计稿中的 px => 750/pageWidth rpx 即可。

3.2样式导入

wxss中直接就⽀持,样式导⼊功能。

也可以和 less中的导⼊混⽤。

使⽤ @import

语句可以导⼊外联样式表,只⽀持相对路径。

⽰例代码:

.small-p {  padding:5px; }
@import "common.wxss";.middle-p {  padding:15px; }

3.3. 选择器

特别需要注意的是 ⼩程序 不⽀持通配符 * 因此以下代码⽆效!

*{    margin:0;    padding:0;    box-sizing:border-box; }

⽬前⽀持的选择器有:

选择器样例样例描述
.class.intro选择所有拥有 class= intro 的组件
#id#firsrname选择拥有id="firstname"的组件
elementview选择所有view组件
element,elementview,checkbox选择所有文档的view组件和所有的checkbox组件
nth-child(n)view:nth-child(n)选择某个索引的标签
::afterview::after在view组件后边插入内容
::beforview::befor在view组件前边插入内容

4.常见组件

常见布局组件

view,text,rich-text,button,image,navigater,icon,swiper,radio,checkbox。等

4.1view

代替原来的div标签

<view hover-class="h-class"> 点击我试试  view>

4.2text

文本标签

只能嵌套text

长按文字可以复制,(只有该标签有这个功能)

可以对空格 回车 进行编码

属性名类型默认值说明
selectableBoolanfalse文本是否可选
decodeBoolanfalse是否解码

4.2.1代码

<text selectable="{{false}}" decode="{{false}}"> text>

4.3image

图片标签,image组件默认宽度为320px,高度为240px

支持懒加载

属性名类型默认值说明
srcString图片资源地址
modeString‘scaleToFill’图片裁剪、缩放的模式
lazy-loadBooleanfalse图片懒加载

mode 有效值:

mode有13种模式,其中4种是缩放模式,9种是裁剪模式

4.4swiper微信内置轮播图组件

属性名类型默认值说明
indication-dotsBooleanfalse是否显示面板指示点
indication-colorColorrgba(0,0,0,.3)指示点颜色
indication-activ-colorColor#000000当前选中的指示点颜色
autoplayBooleanfalse是否自动切换
intervalNumber5000自动切换时间
circularBooleanfalse是否循环轮播

4.5navigator导航组件 类似超链接标签

属性名类型默认值说明
tagretStringself在那个目标上发生跳转,默认当前小程序,可选值self/miniProgram
urlString当前小程序的跳转链接
open-typeStringnavigate跳转方式

open-type有效值

说明
navigate保留当前页面,跳转到应用内的某个页面,但是不能跳到tabber页面
redirect关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到tabber页面
swithTab跳转到tabBar页面,打开到应用内的某个页面
reLaunch关闭所有页面,打开到应用内的某个页面
navigateBack关闭当前页面,返回上一页面或者多级页面。可通过getCurrenPages()获取当前的页面栈,决定需要返回几层
exit退出小程序,target='miniProgram’时生效

4.6rich-text富文本标签

可以将字符串解析成对应标签,类似Vue种 v-html功能

代码:

// 1   index.wxml 加载 节点数组 <rich-text nodes="{{nodes}}" bindtap="tap">rich-text>// 2 加载 字符串 <rich-text nodes=''>rich-text>    // index.js    Page({  data: {    nodes: [{      name: 'div',      attrs: {        class: 'div_class',        style: 'line-height: 60px; color: red;'     },      children: [{        type: 'text',        text: 'Hello World!'     }]   }] },  tap() {    console.log('tap') }})

4.6.1nodes属性

nodes属性支持字符串和标签节点数组

属性说明类型必填备注
name标签名string支持部分受信任的HTML节点
attrs属性object支持部分受信任的属性,遵循Pascal命名法
children子节点列表array结构和nodes一致

文本节点:type=text

属性说明类型必填备注
text文本string支持entitiies

注意:

nodes 不推荐使⽤ String 类型,性能会有所下降。

rich-text 组件内屏蔽所有节点的事件。

attrs 属性不⽀持 id ,⽀持 class 。

name 属性⼤⼩写不敏感。

如果使⽤了不受信任的 HTML

节点,该节点及其所有⼦节点将会被移除。

img 标签仅⽀持⽹络图⽚。

4.7button按钮组件

代码:

<button  type="default"  size="{{defaultSize}}"  loading="{{loading}}"  plain="{{plain}}"> defaultbutton>
属性类型默认值必填说明
sizestringdefault按钮的大小
typestringdefault按钮的样式类型
plainstringfalse按钮是否镂空,背景色透明
disabledbooleanfalse是否禁用
loadingbooleanfalse名称前是否带loading图标
fORM-typestring用于’‘组件,点击分别会触发’'组件的submit/reset事件
open-typestring微信开放能力

size的合法值

说明
default默认尺寸
mini小尺寸

type的合法值

说明
primary绿色
default白色
warn红色

form-type的合法值

说明
submit提交表单
reset重置表单

open-type的合法值

说明
contact打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从bindcontact回调中获得具体信息
share触发用户转发
getPhoneNumber获取用户手机号,可以在从bindgetphonebunber回调中获取到用户信息
getUserInfo获取用户信息,可以从bindgetuserinfo回调中获取到用户信息
launchApp打开APP,可以通过app-parameter设置设定向APP的参数
openSetting打开授权设置页
feedback打开”意见反馈“页面,用户可以提交反馈内容并上传日志,开发者可以登录小程序管理后台进入左侧菜单“客服反馈”页面获取到反馈内容

4.8icon

属性类型默认值必填说明
typestringicon的类型,有效值:success,success_no_circle,info,warn,waiting,cancel,download,search,clear
sizenumber/string23icon的大小
colorstringicon的颜色,用css的color

代码:

Page({  data: {    iconSize: [20, 30, 40, 50, 60, 70],    iconType: [      'success', 'success_no_circle', 'info', 'warn', 'waiting', 'cancel','download', 'search', 'clear'   ],    iconColor: [      'red', 'orange', 'yellow', 'green', 'rgb(0,255,255)', 'blue', 'purple'   ], }})

wxml

<view class="group">  <block wx:for="{{iconSize}}">    <icon type="success" size="{{item}}"/>  block>view> <view class="group">  <block wx:for="{{iconType}}">    <icon type="{{item}}" size="40"/>  block>view> <view class="group">  <block wx:for="{{iconColor}}">    <icon type="success" size="40" color="{{item}}"/>  block>view>

4.9radio单选框

可以通过color属性来修改颜色

需要搭配radio-group一起使用

4.10checkbox复选框

可以通过color属性嘞修改颜色

需要搭配checkbox-group一起使用

4.11自定义组件

1.创建自定义组件

类似于页面,一个组件由JSON wxml wxss js四个文件组成

在微信开发者工具中新建文件夹名为components,右键新建文件夹,新建文件夹右键新建component,会得到响应的四个文件

2.声明组件

首先需要在组件的json文件中进行自定义组件声明

{“component”:true}

3.编辑组件

同时,还要在组件的wxml文件中编辑组件模板,在wxss文件中加入组件样式

slot表示插槽,类似于vue中的slot

<view class="inner"> {{innerText}}    <slot>slot>view>

在组件的wxss文件中编写样式

注意:在组件wxss中不应使用ID选择器、属性选择器和标签选择器。

.inner {  color: red; }

4.注册组件

在组件的js文件中,需要使用Component()来注册组件,并提供组件的属性含义、内部数据和自定义方法

Component({  properties: {    // 这里定义了innerText属性,属性值可以在组件使用时指定    innerText: {      // 期望要的数据是 string类型      type: String,      value: 'default value',   } },  data: {    // 这里是一些组件内部数据    someData: {} },  methods: {    // 这里是一个自定义方法    customMethod: function(){} }})

5.声明引入自定义组件

首先要在页面的json文件中进行引用声明。还要提供对应的组件名和组件路径

index.wxml

{ // 引用声明  "usinGComponents": { // 要使用的组件的名称     // 组件的路径    "my-header":"/components/myHeader/myHeader" }}

6.页面中使用自定义组件

<view>    <my-header inner-text="Some text">    <view>用来替代slot的view>    my-header>view>

4定义段与示例方法

component构造器可用于定义组件,调用component构造器可以指定组件的属性、数据、方法等

定义段类型是否必填描述
propertiesObject
Map
组件的对外属性,是属性名到属性设置的映射表
dataObject组件的内部数据,和properties一同用于组件的模板渲染
observersObject组件数据字段监听器,用于监听properties和data的变化
methodsObject组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
createdFunction组件生命周期函数,在组件实例刚刚被创建时执行,注意此时不能调用setData
attachedFunction组件的生命周期函数,在组件实例进入页面节点树时执行
readyFunction组件的生命周期函数,在组件布局完成后执行
movedFunction组件生命周期函数,在组件实例被移动到节点树另一个位置时执行
detachedFunction组件生命周期函数,在组件实例被从页面节点树移除时执行

7.组件-自定义组件传参

父组件通过属性的方式给子组件传递参数

子组件通过事件的方式向父组件传递参数

7.1过程

父组件把数据**{{tabs}}**传递到子组件的tabItems属性中

父组件监听onMyTab事件

子组件触发bindmytap中的mytap事件

​ 自定义组件触发事件时,需要使用triggerEvent方法,指定事件名detail对象

父—>子动态传值 this.selectComponent(“#tabs”);

父组件代码

// page.wxml<tabs tabItems="{{tabs}}" bindmytap="onMyTab" > 内容-这里可以放插槽</tabs>// page.js  data: {    tabs:[     {name:"体验问题"},     {name:"商品、商家投诉"}   ] },  onMyTab(e){    console.log(e.detail); },

子组件代码

// com.wxml<view class="tabs">  <view class="tab_title"  >    <block  wx:for="{{tabItems}}" wx:key="{{item}}">      <view bindtap="handleIteMactive" data-index="{{index}}">{{item.name}}</view>    </block>  </view>  <view class="tab_content">    <slot></slot>  </view></view>// com.jsComponent({  properties: {    tabItems:{      type:Array,      value:[]   } },    data: { },    methods: {    handleItemActive(e){      this.triggerEvent('mytap','haha');   } }})

5.小程序的生命周期

分为应用生命周期页面生命周期

5.1应用生命周期

属性类型默认值必填说明
onLaunchfunction监听小程序初始化
onShowfunction监听小程序启动或切后台
onHidefunction监听小程序切后台
onErrorfunction错误监听函数
onPageNotFoundfunction页面不存在监听函数

5.2页面生命周期

属性类型说明
dataObject页面的初始数据
onLoadfunction生命周期回调-监听页面加载
onShowfunction生命周期回调-监听页面显示
onReadyfunction生命周期回调-监听页面初次渲染完成
onHidefunction生命周期回调-监听页面隐藏
onUnloadfunction生命周期回调-监听页面卸载
onPullDownRefreshfunction监听用户下拉动作
onReachBottonfunction页面上拉触底事件的处理函数
onShareAppMessagefunction用户点击右上角转发
onPageScrollfunction页面滚动触发事件的处理函数
onResizefunction页面尺寸改变时触发
onTabltemTapfunction当前时tab页时,点击tab时触发

来源地址:https://blog.csdn.net/JHXL_/article/details/126793770

--结束END--

本文标题: 微信小程序——语法篇

本文链接: https://lsjlt.com/news/375108.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序——语法篇
    1.模板语法 WXML(WeiXin Markup Language)是框架设计的⼀套标签语⾔,结合基础组件、事件系统,可以构建出⻚⾯的结构。 1.1数据绑定 1.1.1普通写法 {{message}} Page({data:{messag...
    99+
    2023-08-19
    微信小程序 小程序 javascript
  • 微信小程序——开篇
    开篇 前言锻造兵器开发者账号微信开发者工具 写在最后 前言 如今微信小程序已经成为我们日常生活中不可或缺的‘介质’,如我们的出行、购物、餐饮、社交、娱乐等活动的小程序已经因有尽有,相比...
    99+
    2023-09-02
    微信小程序 小程序
  • 【微信小程序】小程序知识补充篇
    🎁写在前面: 观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列又更新了呀。 还有就是中秋节就快来啦,程序员过中秋,当然是要好好放松一下啦,那么中秋前我们就不能偷懒了,赶紧学习...
    99+
    2023-09-06
    微信小程序 小程序 前端
  • 微信小程序开发语言(微信小程序开发教程)详细步骤
    微信小程序开发语言 开发微信小程序用什么语言 1、微信小程序开发所需要的语言比较特别,首先介绍一下需要使用到的文件类型大致分为:WXML(WeiXin Mark Language 微信标记语言)、WX...
    99+
    2023-10-23
    微信小程序 开发语言 小程序
  • 微信小程序开发篇之踩坑记录
    最近参与开发了公司的第一款小程序,开发体验基本类似于基于webview的混合式开发,可以调用官方强大的api,但也有一些坑或者说不习惯的地方。这篇文章从实用性出发,记录了开发过程中的...
    99+
    2024-04-02
  • 微信小程序 | 小程序开发
    🖥️ 微信小程序专栏:小程序开发 初级知识 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫...
    99+
    2023-09-08
    微信小程序 小程序
  • 微信小程序--小程序框架
    目录 前言:  一.框架基本介绍 1.整体结构: 2.页面结构: 3.生命周期: 4.事件系统: 5.数据绑定: 6.组件系统: 7.API: 8.路由: 9.模块化: 10.全局配置: 二.视图层详解 1.WXML(WeiXin Mar...
    99+
    2023-10-20
    小程序 微信小程序
  • 基于微信小程序的旅游社微信小程序
    文末联系获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myecli...
    99+
    2023-10-23
    微信小程序 小程序 mysql java 毕业设计
  • onShareAppMessage 微信小程序
    onShareAppMessage(Object object) 监听用户点击页面内转发按钮(button 组件 open-type=“share”)或右上角菜单“转发”按钮的行为,并自定义转发内容。 注意:只有定义了此事件处理函数,右上角...
    99+
    2023-08-19
    微信小程序 小程序 前端
  • 微信小程序开发【从0到1~入门篇】
    目录 1. 微信小程序介绍 1.1 什么是小程序? 1.2  小程序可以干什么? 2. 申请账号 2.1 申请帐号 2.2 测试号申请(我们小程序账号申请完成之后,建议务必要申请一个测试号用来开发) 3. 安装开发工具 3.1 选择稳定版...
    99+
    2023-08-31
    微信小程序 小程序
  • 微信小程序的自学之路一按钮篇
    开始慢慢接触微信小程序的开发,之后会陆续整理自己的学习笔记。纯新手,慢慢在网上接触学习的。 基本没有规律可言,想到什么写什么 文章目录 1、按钮的基础样式(1)绿色按钮(2) 红色按钮(3)小...
    99+
    2023-09-09
    微信小程序 小程序
  • 【微信小程序】实现微信小程序登录(附源码)
    实现微信小程序登录 文章目录 实现微信小程序登录登录功能简介界面展示代码展示 登录功能简介 通过点击登录按钮,调用微信接口wx.getUserProfile拿到微信的个人信息,先检查是...
    99+
    2023-09-07
    微信小程序 小程序 微信 前端
  • 微信小程序 | 小程序WXSS-WXML-WXS
    🖥️ 微信小程序 专栏:小程序WXSS-WXML-WXS 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言...
    99+
    2023-10-03
    微信小程序 小程序 前端 javascript 前端框架
  • 微信小程序显示loading效果,微信小程序节流效果,微信小程序生命周期,微信小程序组件的创建与使用
    一、显示loading效果         文档地址:wx.showLoading(Object object) | 微信开放文档         请求前 显示loading 效果,请求结束后隐藏loading // 在请求模块中wx.sh...
    99+
    2023-09-14
    微信小程序 小程序 微信
  • 微信小程序开发WXML模板语法基础教程
    目录1.数据绑定1. 数据绑定的基本原则2. 在 data 中定义页面的数据3. Mustache 语法的格式4. Mustache 语法的应用场景5. 动态绑定内容6. 动态绑定属...
    99+
    2024-04-02
  • 【小程序】微信小程序如何获取微信公众号openid?
    一图总览 大家可以先看看下面的流程图,来了解笔者想实现的功能,简单来说就是两个不同主体间的小程序与公众号该如何产生关联。 注:为什么这里要强调不同主体呢,因为同主体的小程序与公众号是可以通过unionId来进行关联绑定。 ...
    99+
    2023-08-19
    微信小程序 小程序 微信
  • 微信小程序的开发方法
    本篇内容主要讲解“微信小程序的开发方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序的开发方法”吧!1、准备工作用没有注册过微信公众平台的邮箱注册一个微信公众号, 申请帐号 , 根据指...
    99+
    2023-06-29
  • 微信小程序运营的方法
    这篇文章主要介绍了微信小程序运营的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序运营的方法文章都会有所收获,下面我们一起来看看吧。  1、装饰打造  用一个例子来说明,比如一家服装店。某服装店为了...
    99+
    2023-06-26
  • 微信小程序注册的方法
    这篇文章主要介绍“微信小程序注册的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序注册的方法”文章能帮助大家解决问题。方式一:通过微信公众号(已认证的企业类型)快速注册快速注册认证小程序...
    99+
    2023-06-26
  • 微信小程序解包
    这个也是因为前阵子的某牛活动,自己第一次接触小程序反编译。本文当时写了一半阳了,又处理了点事情,休息好了继续写写 该文章仅供学习交流,请勿用于非法用途,后果自负 一、准备工具 Node.js环境(https://nodejs.or...
    99+
    2023-09-11
    微信小程序 小程序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作