微信小程序基础语法

这篇具有很好参考价值的文章主要介绍了微信小程序基础语法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序基础语法

官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/

事件 bindtap data-xxx

  • bindtap

    <button class="bt" data-myName="ghp"  bindtap="clickButton">按钮</button>
    
    • data-xxx事件节点(xxx是节点名称),ghp是事件节点数据
    • bindtap用于绑定事件,clickButton是事件名
     clickButton:function(event){
        // 获取事件节点数据
        console.log(event)
        console.log(event.currentTarget.dataset.myname)
     }
    

    微信小程序基础语法,微信小程序,微信小程序,小程序

    注意:事件节点名称统一是小写,即使使用大写,经过解析也会变成小写,比如上面我们定义的时间节点是myName,经过解析后变成了myname,可以通过console.log(eventt)打印事件查看

数据绑定

data中定义数据,然后就能够实现绑定(简直和Vue一摸一样)

示例

每次点击触发事件,count都自增1,count实现双向数据绑定

index.wxml

<view class="container">
   <buttonbindtap="clickButton">按钮</button>
   {{count}}
</view>

index.js

  data: {
      // 这里就是用来定义绑定数据
    count:1
  },
  clickButton:function(event){
    console.log("事件触发了")
    // 数据自增
    this.setData({
      count: this.data.count+1
    })
  }

页面跳转 (redirectTo、tabBar)

  • redirectTo

    index.wxml

    <button  bindtap="clickButton">按钮</button>
    

    index.js

      clickButton:function(event){
        console.log("事件触发了")
        // 页面重定向
        wx.redirectTo({
          url: '/pages/index/index',
        })
       }
    

    注意:要保障app.json的pages中有定义pages/index/index

    微信小程序基础语法,微信小程序,微信小程序,小程序

  • tabBar

    也可以使用tabBar实现,只是说redirectTo需要通过事件触发

    微信小程序基础语法,微信小程序,微信小程序,小程序

引用wxss

在wxcss文件中通过@import"./xxx"引入

微信小程序基础语法,微信小程序,微信小程序,小程序

引用JS

  1. 编写模块 common.js

  2. 暴露模块module.exports.sayHello=sayHello

  3. 引入模块const com = require('../demo03-moudle/common')

  4. 调用模块

       clickBt2(){
         com.sayHello("ghp")
       }
    

具体如下图所示:

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

wx:for、wx:if

  • wx:for

    <!--index.wxml-->
    <view class="container">
      <view wx:for="{{array}}" wx:for-index="index" wx:for-item="key" >
        当前索引{{index}} ---当前索引对应的元素{{key}}
      </view>
    </view>
    
    // pages/demo04-data-bind/index.js
    const app = getApp()
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        array:[1,2,3,4,5,6,7,8,9]
      }
    })
    

    微信小程序基础语法,微信小程序,微信小程序,小程序

  • wx:if

    <!--index.wxml-->
    <view class="container">
      <view wx:for="{{array}}" wx:for-index="index" wx:for-item="value" wx:key="value">
        <view wx:if="{{index%2==0}}">
        <!-- 只展示索引为偶数的元素 -->
          当前索引{{index}} ---当前索引对应的元素{{value}}
        </view>
    </view>
    

    微信小程序基础语法,微信小程序,微信小程序,小程序

    注意:如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略

知识拓展wx:if vs hidden

因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。

同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。

相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。

wx:key、switch

实现点击一个按钮,让switch自增

注意:不加wx:key

微信小程序基础语法,微信小程序,微信小程序,小程序

index.js:

// pages/demo05-wxkey/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    arr:[
      {
        id:0,
        content:'a'
      },
      {
        id:1,
        content:'b'
      },
      {
        id:2,
        content:'c'
      }
    ]
  },
  addSwitch(){
    const id = this.data.arr.length + 1
    console.log(id)
    const ascii = this.data.arr[id-2].content.charCodeAt()
    console.log(ascii)
    const content = String.fromCharCode(ascii+1)
    console.log(content)
    const obj = {
      id: id,
      content: content
    }
    this.data.arr = [obj].concat(this.data.arr)
    /*
    push方法会把数组原原本本的输出
    concat方法会把数组解析之后再输出
    */
    // this.data.arr.push(obj)
    this.setData({
      arr: this.data.arr
    })
  }
})

index.wxml:

<!--pages/demo05-wxkey/index.wxml-->
<view>
<switch wx:for="{{arr}}" wx:for-index="index" wx:for-item="obj" wx:key="index">
索引--{{index}} 值--{{obj.content}}
</switch>

<button bindtap="addSwitch"> Add Switch </button>
</view>

引用template

使用template引用其它模块的模板

微信小程序基础语法,微信小程序,微信小程序,小程序

其他模块的模板:

<template name="data">
    <view>年龄:{{name}}</view>
    <view>年龄:{{age}}</view>
</template>

当前模块:

js:

    arr:[
      {
        name:'张三',
        age:16
      },
      {
        name:'李四',
        age:17
      }
    ]

wxml:

<import src="../demo05-wxkey/index"></import>

<view  wx:for="{{arr}}" wx:for-index="index" wx:for-item="obj" wx:key="index">
    <template is="data" data="{{name:obj.name, age:obj.age}}"/>
</view>

引用wxs

微信小程序基础语法,微信小程序,微信小程序,小程序

data.wxs:

// 定义一个变量
var stu = {
  name:'张三',
  age:18
}

// 暴露当前模块中的变量
module.exports={
  obj:stu
}

mod.wxs:

// 导入其它模块
var data = require('./data.wxs')

// 定义一个函数
var sayHello = function(arg) {
  console.log("Hello",arg)
  return arg;
}
// 暴露当前模块中的变量和函数
module.exports = {
  param: data.obj,
  fun: sayHello
};

index.wxml:

<wxs src="./mod.wxs" module="mod" />
<view> 
<!-- 调用模块中的函数和变量 -->
   {{mod.fun(mod.param.name)}}
 </view>
111
 <view> 
 <!-- 调用模块中的变量 -->
   {{mod.param.age}}
 </view>

微信小程序基础语法,微信小程序,微信小程序,小程序

引用index.wxml

include 可以将目标文件除了 <template/> <wxs/> 外的整个代码引入

<include src="./header"></include>

<include src="../demo07-wxs/index"></include>

<include src="./footer"></include>

可以看到本模块中的footer.wxml和header.wxml都引入成功,而demo02-wxs中的页面<wxs>没有引入成功

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

flex布局

玩转微信小程序布局,display flex布局详细教程 | 微信开放社区 (qq.com)

  • flex-direction:设置成员的排列方向,它有以下几个取值

    • row 代表成员横向排列
    • column 代表成员纵向排列
    • row-reverse 代表横向排列,但成员反转显示
    • column 代表成员纵向排列,但成员反转显示
  • flex-wrap: 设置成员的换行规则,它有以下几个取值

    • nowrap 代表不换行(随你容器成员的width设置多大或者多小,都不会换行)
    • wrap 代表换行(容器里的成员宽度超过屏幕宽度会换行)
    • wrap-reverse 代表反向进行换行
  • justify-content:设置成员的对齐方式,它有以下几个取值

    • flex-start 代表左对齐
    • flex-end 代表右对齐
    • center 居中对齐
    • space-between 等比例均分(含留白部分,就是与屏幕边框有白色距离)
    • space-around 等比例均分(不含留白部分,就是与屏幕边框无白色距离)

flex-direction

index.wxml:

<!--pages/demo09-flex/index.wxml-->
<view class="flext-direction">
<!-- 为了区分每个块,所以给他们都设置点宽,高,定义class属性为size -->
<!-- 为了从肉眼看上去有区别,都给设置个背景颜色 -->
    <view class="size a">块1</view>
    <view class="size b">块2</view>
    <view class="size c">块3</view>
    <view class="size d">块4</view>
    <view class="size e">块5</view>
    <view class="size e">块6</view>
    <view class="size e">块7</view>
    <view class="size e">块8</view>
</view>

index.wxss:

/* 演示flext-direction属性*/
.flext-direction{
  /* 把class属性为flextest的元素开启flex布局 */
  display: flex; 
  /* row 从左到右进行排列(默认) */
  /* flex-direction: row; */
  /* row-reverse 从右到左进行排列 */
  /* flex-direction: row-reverse; */
  /* column 从上到下进行排列 */
  /* flex-direction: column; */
    /* column 从下到上进行排列 */
  /* flex-direction: column-reverse; */
}

/* 给flex盒子里面的每个元素都设置一个宽高 */
.size{
  width: 120rpx;
  height: 100rpx;
}
.a{
  background-color: red;
}
.b{
  background-color: yellow;
}
.c{
  background-color: blue;
}
.d{
  background-color: green;
}
.e{
  background-color: orange;
}

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

flex-wrap

index.wxml和上面的一摸一样

index.wxss:

/* 演示flext-wrap属性*/
.flext-wrap{
  /* 把class属性为flextest的元素开启flex布局 */
  display: flex; 
  /* nowrap 设置容器里面的成员不换行,即使成员的宽度超过了屏幕宽度(默认) */
  /* flex-wrap: nowrap; */
    /* wrap 当容器里成员的宽度超过屏幕宽度时会换行,而且随着宽度数值变换,换行效果也会有变化 */
  /* flex-wrap: wrap; */
    /* wrap-reverse 逆向换行 */
  /* flex-wrap: wrap-reverse; */
}

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

justify-content

index.wxml和上面的一摸一样

index.wxss:


微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序

微信小程序基础语法,微信小程序,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-521588.html

到了这里,关于微信小程序基础语法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序中WXML模版语法-数据绑定方法介绍

    1.数据绑定的基本原则 1在data中定义数据 2在WXML中使用数据 2.在data中定义页面的数据 在页面对应的.js文件中,把数据定义到data对象中即可: 3.Mustache语法的格式 把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来即可。语法格式为: 4.Mustache语法的应

    2024年02月12日
    浏览(50)
  • 微信小程序------WXML模板语法之条件渲染和列表渲染

    目录 前言 一、条件渲染 1.wx:if 2. 结合 使用 wx:if 3. hidden 4. wx:if 与 hidden 的对比 二、列表渲染 1. wx:for 2. 手动指定索引和当前项的变量名* 3. wx:key 的使用         上一期我们讲解wxml模版语法中的数据绑定和事件绑定(上一期链接:微信小程序-----WXML模板语法之数据绑定与事件

    2024年01月16日
    浏览(59)
  • 【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap & input (十)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2024年02月01日
    浏览(40)
  • 微信小程序 button按钮怎么触发事件? bindtap语法怎么使用?

    在前端网页中我们需要触发一个事件如果按钮点击后调用函数,文本、图片、链接被点击后调用一个函数一个事件,我们都知道用click,可是微信小程序中的click是不存在的, 他怎么才能和网页中一样的使用click的呢? 这时候有人肯定会问,我不是来学习click的怎么教我bindt

    2024年01月16日
    浏览(116)
  • 微信小程序:tabbar、事件绑定、数据绑定、模块化、模板语法、尺寸单位

    目录 1. tabbar 1.1 什么是tabbar  1.2 配置tabbar  2. 事件绑定 2.1 准备表单 2.2 事件绑定 2.3 冒泡事件及非冒泡事件  3. 数据绑定 3.1 官方文档 4. 关于模块化 5. 模板语法 6. 尺寸单位 下图中标记出来的部分即为tabbar:    官方说明文档:   说明: pagePath中指定的页面,必须在app.jso

    2024年02月04日
    浏览(64)
  • 【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if & hidden (十一)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2024年02月05日
    浏览(45)
  • 微信小程序关于wxs语法、以及能否引入js中的方法(不能调用)

    页面中使用wxs 或者  参考:WXS | 微信开放文档 wxs能引入外部js文件吗 | 微信开放社区 微信小程序中的WXS语法 1、WXS 中不支持let和const,不支持箭头函数。 2、变量命名必须符合下面两个规则: 首字符必须是:字母(a-zA-Z),下划线(_) 剩余字符可以是:字母(a-zA-Z),下划

    2024年02月06日
    浏览(66)
  • 【微信小程序】新版获取手机号码实现一键登录(uniapp语法)(完整版附源码)

    需求 如图,点击按钮,获取用户手机号实现一键登录,当然,用户也可以自行输入其他手机号进行登录 问题 要想获取用户手机号并不复杂,但由于近几年微信小程序获取手机号的api进行了更新,当前很多帖子使用的仍是旧的方式,先调wx.login()获取code,iv,等等加密数据, 给到

    2024年02月05日
    浏览(53)
  • 【微信小程序】-- WXML 模板语法 - 列表渲染 -- wx:for & wx:key(十二)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2024年02月12日
    浏览(43)
  • 横向比较微信小程序和vue的语法与结构差异,让你快速理解用法

    不少前端开发估计长期使用vue框架进行前端开发,但不可避免会有特殊情况需要人手去接坑其它项目,而刚好那个项目是原生微信小程序项目怎么办???其实很简单,一对一对地与vue进行横向对比就行,通过这样的方式最多一个上午就能直接上去写页面了,本文主打一个简

    2024年04月26日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包