点餐小程序实战教程04变量定义和初始化

目录

  • 1 什么是变量
  • 2 如何创建变量
  • 3 具体该选择什么类型
  • 4 变量的初始化
  • 5 await/async
  • 6 调试我们的程序
  • 7 运行我们的代码
  • 总结

日常碰到的最多的一句话是,我看到代码就发憷,我一点基础也没有。那低代码开发需要掌握什么样的基础,怎么才算是掌握了呢?本篇我们就讲解一下入门低代码第一个需要学习的知识点,变量。

1 什么是变量

在低代码开发中,变量是一个至关重要的概念。它们用于存储和管理数据,使我们能够在应用中动态地处理信息。微搭的变量类型主要包括文本、数字、布尔值、对象和数组,这些类型与 JavaScript 的变量类型相对应。理解这些基本概念将为你后续的开发打下坚实的基础。

微搭中一共有五种变量的类型,包括文字、数字、布尔值、对象、数组。

  1. 文字(String):用于存储字符数据,例如用户的姓名、描述信息等。文字变量通常用引号括起来,如 “Hello, World!”。
  2. 数字(Number):用于存储数值数据,可以是整数或浮点数。例如,42 或 3.14。
  3. 布尔值(Boolean):用于表示真或假的值,只有两个可能的取值:true 或 false。布尔值常用于条件判断。
  4. 对象(Object):用于存储键值对的集合,可以包含多个属性和方法。例如,一个用户对象可以包含姓名、年龄和邮箱等信息。
  5. 数组(Array):用于存储一组有序的数据,可以是任意类型的变量。数组的元素可以通过索引访问,例如,[1, 2, 3] 或 [“apple”, “banana”, “cherry”]。

2 如何创建变量

创建变量的方法比较简单,打开我们的应用编辑器后,在代码区点击+号创建我们的变量
在这里插入图片描述
在打开的界面,选择新建自定义变量来创建我们的变量
在这里插入图片描述

3 具体该选择什么类型

创建变量需要选择什么类型,是和你的业务相关的。比如我们上一篇写了如何创建后端的API来实现用户的登录验证功能。那这一篇就需要结合登录的API来实现前端用户信息的获取。

初学者可能会有疑问,什么是对象呢?比如我们这个场景,我们在用户注册的时候采集了用户的昵称、头像、手机号。那在小程序一加载的时候我就需要获取这个信息。像这种结构的数据我们就可以使用对象来存储。

对象是一组键值对的集合,比如我们一个用户信息,作为一个对象,他的结构是

{nickName:"低代码布道师",avatarURL:"cloud:file/lowcode.png",phone:""}

对象的定义是用一组大括号括起来,里边是键值对。左边是键,右边是值,键值对用冒号分隔。值的话要根据在数据源字段的类型来决定,如果是文本那就用双引号括起来,如果是数字就直接写数字。如果是布尔值,那就写true或者false,也可以是对象和数组

有了基本了解之后,我们来定义一个user对象。对象还有一个知识点是作用域,就是在什么地方可以使用。如果是全局作用域,那就每个页面都可以使用,如果是页面作用域那么只有当前页面可以使用。使用的概念是在组件的属性绑定的时候,你可以看见看不见你自己定义的变量。

我们这里的用户对象,作用域就要选择全局,因为用户登录后,每个页面就不重复的获取身份信息了。

这个时候我们需要在全局旁边创建变量,变量类型选择对象
在这里插入图片描述
之后要修改变量的名称,改为user
在这里插入图片描述

4 变量的初始化

变量定义好之后我们需要初始化,就是将具体的值赋值给变量。那选择什么时间给user对象赋值呢?这就需要用到页面的什么周期的概念。

我们经常使用的是页面的显示onShow生命周期函数。在这个地方去加载用户信息,因为这个时候组件已经加载完毕了,不会出现各种异常的问题。

要想加载用户信息就需要调用我们写好的后端API,怎么调用呢?我们是通过编写自定义方法来调用的。

还是在全局旁边点击+号,这次就需要创建javascript方法了
在这里插入图片描述
将生成的默认代码替换成如下代码

export default async function ({ event, data }) {try {const userinfo = await $w.auth.getUserInfo();console.log("userinfo", userinfo);const openid = userinfo.openId ;console.log("openid", openid);const result = await $w.cloud.callDataSource({dataSourceName: 'userManager_ssztgij',methodName: 'customerLogin',params: { openid },});console.log("result",result)if(result.code==0){$w.app.dataset.state.user = result.data}} catch (error) {console.error("Error in main function:", error);}
}

在这里插入图片描述
有的同学可能直接就替换进去,然后就问,啥也没获取到呀。这个只是给了你代码的模板,你那的肯定和我是有不同的,这里需要注意替换我们dataSourceName,这个是你的后端API的标识。

打开你的控制台,找到基本信息
在这里插入图片描述
找到后替换到代码里

然后切换到APIs方法,如果方法标识你用的是默认生成的也需要替换一下,替换到我们的methodName里
在这里插入图片描述

5 await/async

老师,你的代码里的await是干啥的呀?

await和async就像情侣一样,总是成对的出现。async关键字用于定义一个异步函数。异步函数会返回一个 Promise 对象,这意味着我们可以在函数内部使用 await 来等待异步操作的完成。

那什么是异步呢,异步就是调用之后下边的代码会接着运行,不等待结果返回。那我们一般写逻辑的时候都是依赖于上一步的运行结果,这样弄了之后肯定就不符合预期了。

为了我们代码执行正确所以需要将我们整体的自定义方法声明为异步,就是在function前边写一个async就表示这个函数是异步的了。

函数声明为异步之后,里边的调用就可以使用await关键字,表示要等待结果的返回。

这里我们用了两次await关键字,第一次我们是调用了官方封装的鉴权API,可以获取用户的openId

const userinfo = await $w.auth.getUserInfo();
const openid = userinfo.openId

第二个await我们通过获取到的openid来调用我们的后端的API,去获取用户是否已经注册了

const result = await $w.cloud.callDataSource({dataSourceName: 'userManager_ssztgij',methodName: 'customerLogin',params: { openid },});

得到了这个结果之后,我们就可以通过分支判断语句,来判断用户是否注册了,注册用户我们就把得到的用户对象赋值给我们的全局变量。如果未注册我就什么也不干,保持全局变量是默认值

6 调试我们的程序

代码中有好多console.log这个是做什么的?这个是我们的调试信息,用来向控制台打印,这样便于我们看到变量的执行结果。

具体是打开我们底部的开发调试工具,在console里可以看到代码执行的结果

在这里插入图片描述

7 运行我们的代码

目前我们的代码只是写在了自定义方法中,怎么让他被调用呢?自定义方法通常都是在事件中被调用。

在大纲树里选中我们的页面组件,在右侧的属性面板中找到对应的事件
在这里插入图片描述
点击一下页面显示,在弹出的界面选择javascript代码,选择我们的init方法即可
在这里插入图片描述
在这里插入图片描述
配置完毕后点击导航条的实时预览,打开开发调试工具,就可以看到输出的信息
在这里插入图片描述
在这里插入图片描述

总结

本篇我们讲解了变量的基本概念,讲解了在微搭中如何创建变量,如何给变量赋值。也讲解了调试的方法,赶紧照着教程练一练吧,祝你早日成为优秀的低代码开发者。

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

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

相关文章

C与汇编之间的相互调用(29)

1 先来看一下 基本的调用规则。 注意: 程序通过 r1 -r4 来保存 传递的参数,如果 超过了 4个参数怎么办, 那就 放到栈里面。 注意: 堆栈是满递减, FD。 子程序的返回结果 会放到R0 里面。 2 然后是 c 语言调用 汇编语言…

MongoDB 5.0版本副本集集群

一、MongoDB 5.0版本副本集集群部署 什么是MongoDB的副本集 MongoDB的副本集(Replica Set)是一种用于提高数据库系统可用性、可靠性和数据冗余性的机制。副本集包含一组相互连接的MongoDB节点,其中包括一个主节点(Primary&#…

使用FastJson2将对象转成JSON字符串时,小数转换出错

maven坐标 <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.40</version> </dependency> 问题现象&#xff1a; 问题原因&#xff1a; IOUtils.write…

SSM框架学习(二:SpringFramework实战指南)

目录 一、SpringFramework介绍 1.总体技术体系 &#xff08;1&#xff09;单一架构 &#xff08;2&#xff09; 分布式架构 2.Spring 和 SpringFramework概念 &#xff08;1&#xff09;广义的 Spring&#xff1a;Spring 技术栈&#xff08;全家桶&#xff09; &#xff…

基于IndexDB+md-editor-v3实现的简单的文章书写小系统

基于IndexDBmd-editor-v3实现的简单的文章书写小系统 文章说明核心代码效果展示源码下载 文章说明 采用vue3 IndexDB 实现的个人仓库系统&#xff0c;采用markdown书写文章&#xff0c;并将文章信息存储在IndexDB数据库中&#xff0c;通过JavaScript原生自带的分词API进行文章…

STM32——串口通信(发送/接收数据与中断函数应用)

文章目录 通信&#xff1a;串口通信简介&#xff1a;1.双工/单工&#xff1a;2.同步/异步&#xff1a;3.电平&#xff1a;电平标准&#xff1a; 串口参数以及数据帧时序&#xff1a;数据帧&#xff1a;1.波特率和比特率&#xff1a;例&#xff1a;无校验&#xff0c;1位停止位 …

【WebGIS实例】(16)GeoServer 自定义样式 - 渲染矢量数据

1. 前言 本篇博客将会分享一系列的 GeoServer 样式&#xff0c;通过这些样式预先在服务端完成数据渲染&#xff0c;让前端应用更便捷的加载数据服务。 2. 面矢量 示例数据&#xff1a; {type: FeatureCollection,features: [{type: Feature,properties: {分类字段: 字段一…

数据权限的设计与实现系列6——前端筛选器组件Everright-filter使用探索

linear 功能探索 最终我们是需要使用 API 的方式&#xff0c;调用后端服务拉取数据填充筛选器组件&#xff0c;不过在探索阶段&#xff0c;直接用 API 方式&#xff0c;就需要构造 mock 数据&#xff0c;比较麻烦&#xff0c;因此先使用 Function 方式来进行功能验证。 组件初…

代理模式详解

1.基本介绍 代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能;被代理的对象可以是远程对象、创建开销大的对象或需要安全控制…

记录:uniapp直播的弹幕的样式修改与发送弹幕会自动滚动到底部两个技巧

1、在直播页面的弹幕评论中&#xff0c;我们希望的样式是&#xff1a; 观众名字&#xff1a;评论 而且颜色有所区分&#xff0c;并在同一行显示 2、我们希望在发弹幕的时候可以回自动滚动到自己发的内容那里 一&#xff1a;弹幕样式修改 因为是小白&#xff0c;前端对于样式这…

苹果手机照片被删除?如何通过不同的方法来恢复照片

手机已经成为我们生活中不可或缺的一部分&#xff0c;它不仅仅是通讯工具&#xff0c;更是我们记录生活点滴的重要工具之一。然而&#xff0c;正如其他任何设备一样&#xff0c;iPhone上存储的照片有时也会不小心被删除或丢失。 别担心&#xff0c;即使你误删了重要的照片&…

重头开始嵌入式第三十四天(数据库二)

sqlite3的一些补充 目录 sqlite3的一些补充 1.事物 2.连接&#xff0c;联合 3.触发器 4.子查询 1.事物 数据库事务是数据库管理系统执行过程中的一个逻辑单位&#xff0c;它由一系列对数据库的操作组成。 一、事务的特性 1. 原子性&#xff08;Atomicity&#xff09…

Linux:目录及文件管理

目录及文件管理 cd的命令使用 . 当前目录 .. 父目录&#xff08;上一层&#xff09; ~ 表示家目录 家目录&#xff1a;专门存放用户个性化信息的目录 ~user&#xff1a;用户user的家目录 /root: 是Linux管理员的家目录 /home: 存放所有普通用户的家目录]# cd ~root #去…

大模型LLM算法工程师技术面试指南

大模型LLM算法工程师技术面试指南 AI大模型全套学习资料 “最先掌握AI的人&#xff0c;将会比较晚掌握AI的人有竞争优势”。 这句话&#xff0c;放在计算机、互联网、移动互联网的开局时期&#xff0c;都是一样的道理。 我在一线互联网企业工作十余年里&#xff0c;指导过不少…

Java异常类

目录 Java异常类 Java中的异常体系 抛出异常 处理异常 处理异常的两种方式 try...catch和throws的区别 finally关键字 抛出异常注意事项 自定义异常类 Java异常类 Java中的异常体系 在Java中&#xff0c;异常类的父类为Throwable类&#xff0c;在Throwable下&#x…

记一次高版本view-design的组件迁移到自身项目的低版本

背景 npm i -S view-design当前老项目使用view-design这个组件库&#xff0c;但是当我们去官网查看该组件库最新版本&#xff0c;竟然发现没有博主想用的image/ImagePreivew这两个基础组件 说实话&#xff0c;有点离谱了哈&#xff01;&#xff01; 自己造轮子&#xff1f; …

数据结构基本知识

一、什么是数据结构 1.1、组织存储数据 ---------》内存&#xff08;存储&#xff09; 1.2、研究目的 如何存储数据&#xff08;变量&#xff0c;数组....)程序数据结构算法 1.3、常见保存数据的方法 数组&#xff1a;保存自己的数据指针&#xff1a;是间接访问已经存在的…

分库分表核心理念

文章目录 分库&#xff0c;分表&#xff0c;分库分表什么时候分库&#xff1f;什么时候分表&#xff1f;什么时候既分库又分表&#xff1f;横向拆分 & 纵向拆分 分表算法Range 范围Hash 取模一致性 Hash斐波那契散列 严格雪崩标准&#xff08;SAC&#xff09;订单分库分表实…

【880高数】高等数学一刷错题整理

第一章 函数、极限、连续 2024.8.11日 1. 2. 3. 4. 5. 2024.8.12日 1. 2. 3. 4. 5. 6. 7. 8. 2024.8.13日 1. 2. 3. 4. 2024.8.14日 1. 2. 3. 4. 5. 第二章 一元函数微分学及其应用 2024.8.15日 1. 2. 3. 4. 5. 6. 2024.8.16日 1. 2. 3. 4. 5. 2024.8.17日 1. 2. 3. 4…

个人简历 (自己设计的)

欢迎大家来观看。 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…