再学微信小程序

1 微信小程序有几个文件

微信小程序主要包含以下几个文件:

  1. .wxmlWeiXin Markup Language):用于描述小程序的页面结构,类似于 HTML。在这个文件中,可以使用小程序提供的组件和自定义的组件,以及使用数据绑定和逻辑控制语句来构建页面的结构。
  2. .wxssWeiXin Style Sheets):是一套样式语言,用于描述 .wxml 文件中组件的样式。类似于 CSS,可以设置元素的样式、布局、动画效果等。
  3. .js:小程序的逻辑处理文件,包含了页面的逻辑代码。可以在这个文件中定义页面的事件处理函数、数据的处理和操作等。通过 JavaScript 的逻辑控制,可以实现小程序的交互功能。
  4. app.json:小程序的全局配置文件,必须存在于小程序项目中。在这个文件中,可以进行页面的注册,设置小程序的窗口样式,配置底部导航栏(tabBar),以及设置网络请求等。
  5. app.js:小程序的全局 JavaScript 文件,用于监听和处理小程序的生命周期函数、声明全局变量等。可以在这个文件中编写全局的逻辑代码。
  6. app.wxss:小程序的全局样式文件,用于设置小程序全局的样式。可以在这个文件中定义小程序的全局样式,如页面的背景色、字体样式、导航栏样式等。

以上是微信小程序中常见的文件类型,每个文件都有其特定的作用和功能,通过不同类型的文件协同工作,可以构建出完整的微信小程序应用。

2 微信小程序怎样跟事件传值

在微信小程序中,可以通过以下方式实现事件传值:

  1. 使用 data-* 属性:给 HTML 元素添加自定义的 data-* 属性来传递需要的值。例如,可以在某个元素上添加 data-id 属性来传递对应的 ID 值。在事件处理函数中,可以通过 event.currentTarget.dataset 来获取这些属性值。

    <view data-id="123" bindtap="handleTap">点击我</view>
    
    Page({handleTap(event) {const id = event.currentTarget.dataset.id;console.log(id); // 输出:123}
    })
    
  2. 使用自定义属性:在小程序中可以给 HTML 元素添加自定义属性,然后在事件处理函数中通过 event.currentTarget.datasetevent.currentTarget.id 来获取这些属性值。

    <view id="my-element" data-id="123" bindtap="handleTap">点击我</view>
    
    Page({handleTap(event) {const id = event.currentTarget.dataset.id;const elementId = event.currentTarget.id;console.log(id); // 输出:123console.log(elementId); // 输出:my-element}
    })
    
  3. 使用 event.detail:对于一些特定的事件,例如表单的提交事件 bindsubmit,可以通过 event.detail 来获取额外的参数值。

    <form bindsubmit="handleSubmit"><input name="username" placeholder="请输入用户名" /><input name="password" type="password" placeholder="请输入密码" /><button type="submit">提交</button>
    </form>
    
    Page({handleSubmit(event) {const { username, password } = event.detail.value;console.log(username, password); // 输出:输入的用户名和密码}
    })
    

通过以上方法,可以在微信小程序中实现事件传值,并在事件处理函数中获取传递的值,以实现更灵活的交互和数据处理。

3 小程序的 wxss 和 css 有哪些不一样的地方?

小程序的 WXSS(WeiXin Style Sheets)和 CSS(Cascading Style Sheets)在语法和功能上有一些不同之处:

  1. 图片引入方式:在 WXSS 中,图片引入需要使用外链地址,即通过网络地址加载图片,而不能使用相对路径或本地文件路径。

    /* WXSS */
    .image {background-image: url("https://example.com/image.jpg");
    }
    
  2. 缺少 body 元素:小程序中没有 body 元素,样式可以直接写在页面的组件选择器上。

    <!-- WXML -->
    <view class="container"><text class="text">Hello, Mini Program!</text>
    </view>
    
    /* WXSS */
    .container {background-color: #f5f5f5;
    }.text {color: #333;font-size: 14px;
    }
    
  3. 样式导入方式:小程序中的样式文件可以使用 @import 导入其他样式文件。

    /* WXSS */
    @import "common.wxss";.container {/* styles */
    }
    
  4. 不支持部分 CSS 属性和选择器:小程序的 WXSS 并不完全支持所有的 CSS 属性和选择器,例如不支持浮动(float)和定位(position)属性,也不支持伪类选择器(:hover:before 等)和部分伪元素选择器。

    /* WXSS */
    .container {/* 不支持的属性 *//* 不支持的伪类选择器 */
    }
    

需要注意的是,虽然 WXSS 和 CSS 在一些语法和功能上存在差异,但在基本的样式定义和样式属性上,它们仍然具有相似性,并可以使用类似的语法和规则进行样式的定义和控制。

4 小程序关联微信公众号如何确定用户的唯一性

在小程序中,如果要确定用户的唯一性并与微信公众号关联,可以使用以下步骤:

  1. 在小程序中调用 wx.login 方法获取用户的临时登录凭证 code
  2. 将获取到的 code 发送到后端服务器。
  3. 后端服务器通过 code 调用微信开放平台的接口,如 https://api.weixin.qq.com/sns/jscode2session,获取用户的 openidsession_key
  4. 后端服务器将 openid 返回给小程序前端,并存储在客户端。
  5. 在小程序中调用 wx.getUserInfo 方法获取用户信息,包括 encryptedDataiv
  6. 将获取到的 encryptedDataiv 发送到后端服务器。
  7. 后端服务器使用用户的 session_keyencryptedData 进行解密,获取用户的 unionId
  8. 将用户的 unionId 与用户的其他信息一起存储在后端服务器,用于唯一标识用户并与微信公众号关联。

需要注意的是,获取用户的 unionId 需要满足以下条件:

  • 小程序需要通过微信开放平台的方式进行接入,而不是独立的小程序账号。
  • 小程序和微信公众号需要在同一个微信开放平台账号下,且已经完成了关联。
  • 用户在小程序和微信公众号之间需要存在关联关系,例如用户曾经在微信公众号中授权过。

通过以上步骤,可以确定用户的唯一性并与微信公众号进行关联。后续的操作中,可以根据用户的 unionId 进行个性化的业务逻辑处理。

5 微信小程序与vue区别

微信小程序和Vue在一些方面确实存在一些差异,以下是它们之间的一些区别:

  1. 生命周期:微信小程序的生命周期相对简单,包括onLoadonShowonReadyonHideonUnload等几个基本生命周期函数。而Vue拥有更为丰富的生命周期钩子函数,例如createdmountedupdateddestroyed等。
  2. 数据绑定语法:微信小程序使用{{}}来进行数据绑定,而Vue使用简洁的v-bindv-model指令来实现数据绑定。
  3. 元素显示和隐藏:在微信小程序中,可以使用wx-ifhidden来控制元素的显示和隐藏;而在Vue中,可以使用v-ifv-show来实现相同的功能。
  4. 事件处理:微信小程序中使用bindtapcatchtap来绑定事件处理函数,而Vue使用v-on或@来绑定事件处理函数。
  5. 数据双向绑定:在Vue中,可以通过使用v-model指令实现表单元素与数据的双向绑定,而微信小程序需要手动获取表单元素的值并将其赋给对应的数据变量。

除了上述的区别之外,微信小程序和Vue在一些基本概念和思想上也存在差异,例如组件化开发的方式、数据状态管理的实现方式等。然而,它们都可以用于构建具有交互性和可复用性的前端应用程序,并且都有着广泛的应用和社区支持。

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

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

相关文章

虹科分享丨AR与AI融合加速,医疗护理更便捷!

来源&#xff1a;虹科数字化与AR 虹科分享丨AR与AI融合加速&#xff0c;医疗护理更便捷&#xff01; 原文链接&#xff1a;https://mp.weixin.qq.com/s/Fi0wNfk_TDXRo_1-6cSRNQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #AR眼镜 #医疗护理 根据Reports and Da…

Linux ping命令教程:如何检查网络连接状况(附案例详解和注意事项)

Linux ping命令介绍 Ping&#xff08;Packet Internet Groper&#xff09;命令用于检测主机。通过发送Internet控制消息协议(ICMP)Echo数据包到目标主机&#xff0c;检测目标主机是否可达。如果互联网上两个主机之间可以通信&#xff0c;并且没有防火墙阻止这种通信&#xff0…

存储过程为什么使用DELIMITER $$

这是正确的存储过程写法&#xff0c;可以成功执行&#xff0c;相比较上图的报错&#xff0c;增加了DELIMITER&#xff0c;简单解释下这个命令的用途&#xff0c;在MySQL中每行命令都是用“&#xff1b;”结尾&#xff0c;回车后自动执行&#xff0c;在存储过程中“&#xff1b;…

MySQL函数—流程函数

MySQL函数—流程函数&#xff1a;用于实现条件筛选&#xff0c;从而题搞语句的效率。 MySQL函数—流程函数 函数功能IF(value,t,f)如果value为true&#xff0c;则返回t&#xff0c;否则返回fIFNULL(value1,value2)如果value1不为空&#xff0c;返回value1&#xff0c;否则返回v…

Vue+OpenLayers7,快速搭建Vue+OpenLayers7地图脚手架项目。从零开始构建Vue项目并整合OpenLayers7.5.2

返回专栏目录:Vue+OpenLayers7 前言 本章针对Vue初学者,对Vue不熟悉,甚至还不会Vue的入门学生读者。 本章会详细讲解从NodeJS环境到npm环境的各个步骤,再到使用vue-cli脚手架快速生成项目,以及添加OpenLayers7地图库依赖,编写简单的xyz高德地图显示页面的完整教程。 如…

5G安卓手机定制_基于天玑900的安卓主板方案

5G安卓手机方案是一款采用联发科MT6877(天玑900)平台的高性能、可运行安卓操作系统的5G智能模块。该手机采用台积电6纳米低功耗工艺&#xff0c;主频高达2.4GHz&#xff0c;内存支持LPDDR5&#xff0c;并支持5G Sub-6GHz全频段和5G双载波聚合技术等多种制式。同时&#xff0c;该…

docker相关

下载Ubuntu18.04文件64位&#xff08;32位安装不了MySQL&#xff09; https://old-releases.ubuntu.com/releases/18.04.4/?_ga2.44113060.1243545826.1617173008-2055924693.1608557140 Linux ubuntu16.04打开控制台&#xff1a;到桌面&#xff0c;可以按快捷键ctrlaltt 查…

国民技术N32G430C8开发笔记一-新建IAR工程

一、创建IAR工程 1、新建工程&#xff0c;保存到project文件夹。 2、添加SDK到工程。 根据原厂SDK的文件结构在IAR新建相应分组&#xff0c;把各个文件夹的文件加载进去&#xff0c;其中startup文件选择IAR平台的startup_n32g430_EWARM.s。 3、添加头文件路径&#xff0…

2024-01-24(ElasticSearch)

1.mysql和elasticsearch的架构&#xff1a; 2.IK分词器利于分中文词汇。 底层是有一个中文字典&#xff0c;这个字典中的中文词汇也是可以拓展的和禁用某些词。 3.mapping常见属性&#xff1a; type&#xff1a;数据类型 index&#xff1a;是否索引 analyzer&#xff1a;分…

重设红帽Linux root密码:简单实用指南

在使用红帽Linux系统时&#xff0c;我们可能会遇到忘记root密码的情况红帽linux系统root密码&#xff0c;这时候该怎么办呢&#xff1f;本文将详细介绍如何重置红帽Linux系统的root密码。 1.进入单用户模式 首先&#xff0c;我们需要进入单用户模式。开机时红帽linux系统root…

一个使用pyqt的word文档查重工具

一个使用pyqt的word文档查重工具 使用场景代码使用截图打包好的软件下载链接结尾 使用场景 有时我们在借鉴一篇文档之后还不想有太多重复&#xff0c;这个时候可以使用这个工具对两个word文档进行对比 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWind…

C++ inline 关键字有什么做用?

C/C 之中 inline 是一个很有意思的关键字&#xff0c;奇奇怪怪的用法见过不少&#xff0c;今天抽点时间出来聊聊这个东西。 inline 可以用在那些方面&#xff1f;修饰 inline 内链关键字到底有什么作用&#xff1f; OK&#xff1a;started 1、inline 可以用在类成员函数的声明…

Redisson 分布式锁解决主从一致性问题的原理

目录 一、主从不一致产生原因 二、Redisson 解决主从一致性的原理 一、主从不一致产生原因 1. Redis 主从集群&#xff1a;主从读写分离&#xff0c;主节点将数据同步给从节点 主节点&#xff1a;增删改从节点&#xff1a;读 2. 主从同步存在延迟&#xff0c;若主节点宕机…

前端开发提高效率的两大工具

一、浏览器中的开发者工具 怎么启动开发者工具&#xff1f; 在浏览器中按下F12或者鼠标右键点击检查 怎么利用&#xff08;常用的几点&#xff09;&#xff1f; 1、元素 点击标红的图标可以用于在页面选择元素&#xff0c;同时右侧会找到元素在前端代码中的位置 点击下方红…

(delphi11最新学习资料) Object Pascal 学习笔记---第3章第3节(Case语句)

Object Pascal 学习笔记&#xff0c;Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记&#xff1a;豆豆爸 3.3 Case 语句 ​ 如果您的 if 语句变得非常复杂&#xff0c;并且它们基于对序数值的测试&#xff0c;您可以考虑将它们替换为 case 语句。case 语句包括一个用于…

Hudi学习笔记(一)

大数据发展背景 Hudi用于管理分布式文件系统上大型分析数据集存储&#xff0c;支持Spark和Flink整合。它能够是DFS数据集在分钟级时延内支持变更&#xff0c;也支持下游系统对这个数据集的增量处理。 学习目标 什么是数据湖为什么使用数据湖Hudi基本功能如何编译Hudi源码Hud…

MySQL(七)MySQL和Oracle、PostgreSQL的区别

文章目录 一、MySQL和Oracle1.1 基本差别1.2 使用区别 二、MySQL和PostgreSQL2.1 基本差别2.2 使用差别 本系列文章&#xff1a; MySQL&#xff08;一&#xff09;SQL语法、数据类型、常用函数、事务 MySQL&#xff08;二&#xff09;MySQL SQL练习题 MySQL&#xff08;三&…

vue 解决:Module not found: Error: Can‘t resolve ‘vue-router‘ 的问题

1、问题描述&#xff1a; 其一、报错为&#xff1a; Module not found: Error: Cant resolve vue-router 中文为&#xff1a; 找不到模块&#xff1a;错误&#xff1a;无法解析“vue-router” 其二、问题描述为&#xff1a; 根据报错的中文信息可知&#xff1a;应该是无法…

【linux】远程桌面连接到Debian

远程桌面连接到Debian系统&#xff0c;可以使用以下几种工具&#xff1a; 1. VNC (Virtual Network Computing) VNC&#xff08;Virtual Network Computing&#xff09;是一种流行的远程桌面解决方案&#xff0c;它使用RFB&#xff08;Remote Framebuffer Protocol&#xff0…

spring中循环依赖问题、Servlet 的过滤器与 Spring 拦截器区别

spring中的循环依赖问题 当A类中关联B&#xff0c;B类中关联A class A {B b; } class B {A a; } 正常java代码中new A时&#xff0c;b为null&#xff1b;new B时&#xff0c;a为null&#xff1b; 但是在spring中&#xff0c;由于对象是由spring容器管理的&#xff0c;当创建…