微信小程序

小程序的基本组成结构

微信小程序的目录结构通常包括以下主要部分:

  1. app.json: 整个小程序的全局配置文件,用于配置小程序的一些基本信息,如页面路径、窗口样式、tabBar、网络超时等。

  2. pages 文件夹: 用于存放小程序的页面文件,每个页面通常包括 .wxml(模板文件)、.wxss(样式文件)、.js(逻辑文件)、.json(页面配置文件)四个文件。例如,pages/index 文件夹包含小程序的首页。

  3. utils 文件夹: 可选的文件夹,用于存放一些工具类、通用函数或者封装的功能模块,以便在不同页面中复用。

  4. components 文件夹: 可选的文件夹,用于存放自定义组件,以便在不同页面中引用和复用。每个组件也包括 .wxml.wxss.js.json 四个文件。

  5. images 文件夹: 用于存放小程序中使用的图片资源,如图标、背景图等。

  6. app.js: 小程序的全局逻辑文件,通常包含小程序的生命周期函数、全局变量和全局函数。

  7. app.wxss: 小程序的全局样式文件,用于设置全局的样式、主题色等。

  8. project.config.json: 小程序项目的配置文件,包含一些项目配置信息,如开发者工具配置、插件配置等。

  9. sitemap.json: 用于配置小程序的页面索引,以便搜索引擎收录。

  10. 其他文件: 除了上述主要部分,还可以根据需要添加其他文件,如音频文件、视频文件、第三方库等。

小程序的目录结构可以根据项目的需求进行调整和扩展,但通常遵循上述的基本结构。在开发小程序时,合理的目录结构可以使代码更有组织性,便于团队协作和维护。

wxml和html的区别

html:div,  span, img,   a
对应
wxml:view, text, image, navigator
html:<a href=“#”>超链接</a>
wxml:<navigator url=" /pages/home/home"></navigator>

wxss和css区别

  1. 新增rpx尺寸单位
  2. 提供了全局样式和局部样式
  3. wxss仅支持部分css选择器
    .class和#idelement
    并集选择器、后代选择器
    ::after和::before等伪类选择器

js文件的分类

小程序中的JS文件分为三大类,分别是:

  1. app.js
    是整个小程序项目的入口文件,通过调用App()函数来启动整个小程序
  2. 页面的.js 文件
    是页面的入口文件,通过调用Page()函数来创建并运行页面
  3. 普通的.js文件
    是普通的功能模块文件,用来封装公共的函数或属性供页面使用

宿主环境

宿主环境( host environment)指的是程序运行所必须的依赖环境。例如:
Android 系统和iOS 系统是两个个同的伯土个境。女平队bAI7 Pp在心的LAndroid是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的!

小程序的宿主环境

就是微信

小程序的启动过程

  1. 把小程序的代码包下载到本地
  2. 解析app.json 全局配置文件
  3. 执行app.js小程序入口文件,调用App()创建小程序实例
  4. 渲染小程序首页
  5. 小程序启动完成

页面的渲染过程

  1. 加载解析页面的.json配置文件
  2. 加载页面的.wxml模板和.wxss样式
  3. 执行页面的.js文件,调用Page()创建页面实例
  4. 页面渲染完成

常用的视图容器类组件

  1. view
    普通视图区域
    类似于HTML中的div,是一个块级元素常用来实现页面的布局效果
  2. scroll-view
    可滚动的视图区域
    常用来实现滚动列表效果
  3. swiper 和swiper-item
    轮播图容器组件和轮播图item组件

小程序官方把API分为了3类

  1. 事件监听API
  2. 同步API
  3. 异步API

数据绑定

使用mustach语法,跟vue很像:{{ }}

target和currentTarget区别

在这里插入图片描述
总结就是target是源头组件,
而currentTarget是触发事件的组件

事件传参

切记小程序中事件传递参数不能够直接写在方法的后面
像这种:<button bindtap="handleButtonClick(2)">点击按钮</button> 的用法就是错误的

  1. 添加一个data-*属性
<button data-num="2" bindtap="handleButtonClick">点击按钮</button>
  1. 方法中通过事件对象 e 来获取传递的值
Page({handleButtonClick: function(e) {const num = e.currentTarget.dataset.num; // 通过事件对象获取data-num的值console.log('传递的值是:', num); // 输出传递的值}
});

inputHandler可以用来处理实时接受input中的值

<input id="Add2Input" type="number" placeholder="输入数字" bindinput="inputhandler"/>
Page({inputhandler: function(e) {console.log("hello");console.log(e.detail.value); // 打印用户输入的内容},
});

页面配置和全局配置的关系

小程序中,app.json中的window节点,可以全局配置小程序中的每一个页面的窗口表现。

实现页面导航的两种方式

  1. 声明式导航
    使用<navigator>导航组件,通过点击<navigator>组件实现页面跳转
  2. 编程式导航
    调用小程序导航API,实现页面跳转

⭐️声明式导航跳转到tabBar界面

  1. 路径必须/开头
  2. open-type表示跳转的方式,必须为switchTab
<!-- 在WXML中使用switchTab实现声明式导航到TabBar页面 -->
<navigator url="/pages/index/index" open-type="switchTab"><view class="link">点击跳转到首页(TabBar页面)</view>
</navigator>

⭐️声明式导航跳转到非tabBar界面

  1. 路径必须/开头
  2. open-type值为navigate,可以不写
<!-- 在WXML中定义一个跳转链接 -->
<navigator url="/pages/about/about"><view class="link">点击跳转到关于页面</view>
</navigator>

声明式导航还可以实现后退导航

编程式导航导航跳转到tabBar界面

使用wx.switchTab()方法

// 假设你要导航到底部 TabBar 中的某个页面,例如 "pages/index/index"
wx.switchTab({url: '/pages/index/index' // 替换成你要跳转的页面路径
})

编程式导航跳转到非tabBar界面

使用wx.navigateTo()方法

// 在某个事件处理函数或方法中执行导航操作
wx.navigateTo({url: '/pages/other-page/other-page' // 替换成你要跳转的页面路径
})

开发中更推荐使用编程式导航实现后退效果

使用wx.navigateBack()方法

<view><button bindtap="goBack">返回</button>
</view>
// 在页面的 JavaScript 中
goBack: function () {wx.navigateBack({delta: 1, // 返回上一个页面});
}

导航传参

  1. 声明式导航传参
<navigator url=“/pages/info/info?name=zs&age=20”>跳转到info页面</navigator>
  1. 编程式导航传参

使用we.navigateTo()方法跳转到其他页面的时候,也可以携带参数

wx.navigateTo({url: '/pages/info/info?name=zs&age=20'
});

在onLoad中接收导航参数

通过声明式或者是编程式导航传递过来的参数,都可以直接在onLoad事件中直接获取到

Page({onLoad: function (options) {// options 包含了通过 URL 传递的参数const param1 = options.param1;const param2 = options.param2;// 在这里可以使用参数进行逻辑操作},// ...
});

下拉刷新

  1. 全局开启下拉刷新
    在app.json的window节点中,将enablePullDownRefresh设置为true
  2. 局部下拉刷新
    在页面的.json配置文件中,将enablePullDownRefresh设置为true
  3. 配置下拉刷新窗口的样式
    在页面的.json配置文件中,通过backgroundColorbackgroundTextStyle来配置下拉刷新窗口的样式
  4. 监听页面的下拉刷新事件
    onPullDownRefresh()函数
  5. 停止下拉刷新的效果

下拉刷新不会自动停止

调用Wx.stopPullDownRefresh()可以实现停止刷新

上拉触底

上拉触底实现要求:组件需要足够的高

  1. 监听上拉触底
    在页面的.js文件中,通过onReachBottom()函数实现

通过在当前的.json配置文件中配置onReachBottomDistance属性来配置上拉触底的距离

展示loading效果

使用wx.showLoading({})展示loading效果
使用wx.hideLoading({})隐藏loading效果

对上拉触底进行节流处理

自定义编译模式

可以快速定位到编译后的地方,并且可以携带参数

小程序的生命周期

  1. 生命周期的分类
    应用生命周期
    页面生命周期
  2. 生命周期函数的分类
    应用生命周期函数
    onLaunch()只会全局触发一次
    onShow()小程序从后台进入前台时调用
    onHide()
    页面生命周期函数
    onLoad只调用一次
    onShow
    onReady只调用一次
    onHide
    onUnload只调用一次

wxs

wxs是微信独有的script

wxs和javascript的区别

  1. wxs有自己的数据类型

  2. wxs不支持类似于ES6及以上的语法
    不支持: let、const、解构赋值、展开运算符、箭头函数、对象属性简写、et…
    支持: var定义变量、普通function函数等类似于ES5的语法

  3. wxs遵循CommonJS语法规范

内嵌wxs脚本

wxs代码可以编写在wxml文件中的<wxs>标签内,就像Javascript 代码可以编写在html文件中的<script>标签内一样。

每一个wxs标签中都需要提供module属性,用来指定当前wxs模块名称

<!-- pages/index/index.wxml --><view><text>{{ 2 + 3 }}</text> <!-- 内嵌JavaScript表达式 --><wxs module="math">// 定义一个WXS函数var add = function (a, b) {return a + b;}// 导出函数module.exports = {add: add}</wxs><text>{{ math.add(2, 3) }}</text> <!-- 调用内嵌WXS函数 -->
</view>

外联wxs脚本

写在以.wxs结尾的文件之中
.wxs文件一般放在utils文件夹中

<!-- pages/index/index.wxml --><view><text>{{ utils.add(2, 3) }}</text>
</view>
// utils.wxs// 定义一个加法函数
var add = function (a, b) {return a + b;
}// 导出函数,以便在WXML中使用
module.exports = {add: add
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无涯教程-JavaScript - DEC2HEX函数

描述 DEC2HEX函数将十进制数转换为十六进制。 语法 DEC2HEX (number, [places])争论 Argument描述Required/Optionalnumber 要转换的十进制整数。 如果number为负数,则将忽略位数,并且DEC2HEX返回10个字符(40位)的十六进制数字,其中最高有效位是符号位。其余的39位是幅度位…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平教程

详情点击链接&#xff1a;基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平教程 一&#xff0c;空间数据获取与制图 1.1 软件安装与应用 1.2 空间数据 1.3海量空间数据下载 1.4 ArcGIS软…

Java- 虚拟机学习总结

Java文件编译&#xff0c;加载过程 写好java文件&#xff0c;jdk会通过javac编译class文件&#xff0c;classLaoder通过classpath将字节码文件加载进入jre jvm数据区 包含栈&#xff0c;堆&#xff0c;程序计数器&#xff0c;方法区&#xff0c;本地方法栈 JAVA里的常量&…

【GitHub 个人主页】适应于初学者的自定义个人主页设置

▚ 00 自定义GitHub主页的教程 &#x1f341; 【保姆级教程】手把手教你用github制作学术个人主页&#xff08;学者必备&#xff09; ▚ 01 优秀案例 1.1 添加Stats &#x1f383; 网址为&#xff1a;Stats & Most Used Langs

【PHP】手术麻醉系统源码

手术麻醉信息管理系统覆盖了与麻醉相关的各个临床工作环节&#xff0c;可详细记录病人从进入手术室、手术中、到手术结束的全部数据&#xff0c;包括各类仪器的监测数据、麻药、用药、事件、输氧、插管、拔管、输液、出液、输血、呼吸、电子病例、检验信息、检查结果、医嘱、病…

java八股文面试[数据库]——分库分表

什么是分库分表 简单来说&#xff0c;就是指通过某种特定的条件&#xff0c;将我们存放在同一个数据库中的数据分散存放到多个数据库&#xff08;主机&#xff09;上面&#xff0c;以达到分散单台设备负载的效果。 分库分表解决的问题 分库分表的目的是为了解决由于数据量过大…

【学习笔记】C++ 中 static 关键字的作用

目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中&#xff0c;关键字 static 在不同的应用场景下&#xff0c;有不同的作用&#xff0c;这…

信息检索与数据挖掘 |(一)介绍

文章目录 &#x1f4da;信息检索&#x1f407;概念&#x1f407;结构化与非结构化数据&#x1f407;信息检索的基本假设&#x1f407;信息检索小结&#x1f407;附&#xff1a;IR新课题 &#x1f4da;数据挖掘&#x1f407;定义&#x1f407;数据挖掘 vs 机器学习 &#x1f4da…

算法训练营day42|动态规划 part04:0-1背包 (01背包问题基础(两种解决方案)、LeetCode 416.分割等和子集)

文章目录 01背包----二维dp数组01背包----滚动数组416.分割等和子集思路分析背包解法思考总结 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最…

2.4.3 【MySQL】设置系统变量

2.4.3.1 通过启动选项设置 大部分的系统变量都可以通过启动服务器时传送启动选项的方式来进行设置。如何填写启动选项就是下面两种方式&#xff1a; 通过命令行添加启动选项。 在启动服务器程序时用这个命令&#xff1a; mysqld --default-storage-engineMyISAM --max-conn…

DNS解析

1.DNS介绍 DNS 表示域名系统。此系统实质上是用于整理和识别各个域名的网络电话簿。电话簿将“Acme Pizza”之类的名称转换为要拨打的正确电话号码&#xff0c;而 DNS 将“www.google.com”之类的网络地址转换为托管该网站的计算机的物理 IP 地址&#xff0c;如“74.125.19.147…

最新暴力破解漏洞技术详解

暴力破解漏洞简介 暴力破解漏洞的产生是由于服务器端没有做限制&#xff0c;导致攻击者可以通过暴力的手段破解所需信息&#xff0c;如用户名、密码、短信验证码等。暴力破解的关键在于字典的大小及字典是否具有针对性&#xff0c;如登录时&#xff0c;需要输入4位数字的短信验…

CentOS 安装 Docker

注意&#xff1a;下文的命令使用的是 root 用户登录执行&#xff0c;不是 root 的话所有命令前面要加 sudo。 在安装 docker 之前&#xff0c;先说一下配置&#xff0c;我这里是 Centos7 Linux 内核&#xff1a;官方建议 3.10 以上&#xff0c;3.8 以上貌似也可以。 本文目录 1…

链动2+1天天秒商城商业模式

链动21天天秒商城商业模式 在当今市场&#xff0c;一种名为链动21天天的秒杀商城商业模式正在引发广泛关注。这种创新的商业模式具有快速拓展市场的强大能力&#xff0c;让许多用户和商家都感到非常惊讶。那么&#xff0c;这种模式究竟是什么&#xff0c;它又为何具有如此大的…

leetcode:268. 丢失的数字(python3解法)

难度&#xff1a;简单 给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为有 3 个数字&#xff0c;所以所有…

TiDB Serverless Branching:通过数据库分支简化应用开发流程

2023 年 7 月 10 日&#xff0c;TiDB Serverless 正式商用。这是一个完全托管的数据库服务平台&#xff08;DBaaS&#xff09;&#xff0c;提供灵活的集群配置和基于用量的付费模式。紧随其后&#xff0c;TiDB Serverless Branching 的测试版也发布了。 TiDB Serverless Branc…

导出Excel的技术分享-综合篇

导出Excel的技术分享-综合篇 简单的EasyExcel使用 /*** 最简单的写*/public void simpleWrite() {// 注意 simpleWrite在数据量不大的情况下可以使用&#xff08;5000以内&#xff0c;具体也要看实际情况&#xff09;&#xff0c;数据量大参照 重复多次写入// 写法1 JDK8// s…

Excel文件损坏打不开怎么办?可用这三招解决!

当你的excel文件不可读&#xff0c;或者出现提示“文件已经被损坏&#xff0c;无法打开”&#xff0c;这种情况让人措手不及。而且还会给我们正常的工作带来很多麻烦&#xff0c;文件损坏打不开怎么办&#xff1f;来看看这3招&#xff0c;详细的图文教程&#xff0c;小白也能轻…

2022年09月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:二叉树的深度 给定一棵二叉树,求该二叉树的深度 二叉树深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度 时间限制:1000 内存限制:65535 输入 第一行是一个整数n,表示…

基于vue-cli创建后台管理系统前端页面——element-ui,axios,跨域配置,布局初步,导航栏

目录 引出安装npm install安装element-ui安装axios 进行配置main.js中引入添加jwt前端跨域配置 进行初始布局HomeView.vueApp.vue 新增页面和引入home页面导航栏总结 引出 1.vue-cli创建前端工程&#xff0c;安装element-ui&#xff0c;axios和配置&#xff1b; 2.前端跨域的配…