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

news/2024/9/17 19:07:13/ 标签: 小程序, 低代码

目录

  • 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.ppmy.cn/news/1523287.html

相关文章

Java笔试面试题AI答之正则表达式(2)

文章目录 7. 简述Java正则表达式零宽断言 ?8. 简述Java正则表达式贪婪与懒惰 ?贪婪匹配(Greedy Matching)懒惰匹配(Lazy Matching)区别与应用示例 9. 简述Java正则表达式POSIX 字符类(仅 US-ASC…

云计算day38

⼀、编排分类 单机容器编排: docker-compose 容器集群编排: docker swarm、mesosmarathon、kubernetes 应⽤编排: ansible(模块,剧本,⻆⾊) ⼆、系统管理进化史 1. 传统部署时代 早期,各个组织是在物理服务器上运⾏应⽤程序。 由于⽆法…

QT中调用C#的库,如何操作

https://www.jb51.net/article/225143.htm https://www.cnblogs.com/symcheal/p/14639959.html 总的来说: 1、纯纯的C#库的制作 2、CLR库的制作 需要把C#的库拷到项目目录下(#using); // CLRLibrary.h#pragma onceusing namespace System<

浏览器百科:网页存储篇-如何在Chrome中打开Cookie(二)

1.引言 在上一章节《浏览器百科&#xff1a;网页存储篇-Cookie详解&#xff08;一&#xff09;》中&#xff0c;我们深入探讨了 Cookie 的基本概念、组成部分及其在网页存储中的重要作用。理解了 Cookie 的基础知识后&#xff0c;下一步是掌握如何在实际开发过程中管理和调试这…

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战&#xff1a;技术创新引领未来 近年来&#xff0c;国产游戏行业蓬勃发展&#xff0c;技术水平不断提升&#xff0c;许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎&#xff0c;从AI技术到服务器架构&#xff0c;国产游戏已实现质的飞跃。然…

9.9(QT Day 2)

将day1做的登录界面升级优化【资源文件的添加】 在登录界面的登录取消按钮进行以下设置&#xff1a; 使用手动连接&#xff0c;将登录框中的取消按钮使用第2种方式的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义…

六、深入理解JVM 执行引擎

文章目录 前端编译与后端编译字节码指令是如何执行的解释执行与编译执行热点代码识别客户端编译器与服务端编译器 后端编译优化技术方法内联 Inline逃逸分析 Escape Analysis锁消除 lock elision 从计算机程序出现的第一天起&#xff0c;对执行效率的追求就是程序员天生的坚定信…

flask文件下载

一、定义 flask 文件下载python 接收tar 文件 二、实现 flask 文件下载 from flask import Flask, send_file, request import os from gevent.pywsgi import WSGIServer import logginglogging.basicConfig(levellogging.INFO, format"%(asctime)s %(filename)s [lin…

《卷积神经网络 CNN 原理探秘》

CNN基本原理详解 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;是一种前馈神经网络&#xff0c;人工神经元可以响应周围单元&#xff0c;可以进行大型图像处理。卷积神经网络包括卷积层和池化层。 卷积神经网络是受…

输出CAD图中第一个图元类型——c#实现

复制改图元到一个新dwg中&#xff0c;启动代码可实现 如下图设置&#xff1a; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using System.Collections.Generic; using System.Linq…

JAVA学习-练习试用Java实现“单词反转”

问题&#xff1a; 随便输出一个字符串 String str "45abc,defg"; 里面含有 abc&#xff0c;de&#xff0c;fg 三个单词 怎么处理能让单词反转&#xff0c;其他顺序不变呢 输出 “45cba,edgf”; 解答思路&#xff1a; 以下是使用 Java 实现的单词反转程序&#xff1a…

通用软件架构设计参考

前端页面资源 OSS CDN&#xff1a;前端页面资托管在对象存储服务&#xff08;OSS&#xff09;上&#xff0c;并通过内容分发网络&#xff08;CDN&#xff09;加速访问。这样可以提升球用户的访问速度&#xff0c;降低服务器压力。 后端服务 DNS路由&#xff1a;通过DNS智能…

JVM 调优篇2 jvm的内存结构以及堆栈参数设置与查看

一 jvm的内存模型 2.1 jvm内存模型概览 二 实操案例 2.1 设置和查看栈大小 1.代码 /*** 演示栈中的异常:StackOverflowError** author shkstart* create 2020 下午 9:08** 设置栈的大小&#xff1a; -Xss (-XX:ThreadStackSize)** -XX:PrintFlagsFinal*/ public class S…

[数据集][目标检测]机油泄漏检测数据集VOC+YOLO格式43张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;43 标注数量(xml文件个数)&#xff1a;43 标注数量(txt文件个数)&#xff1a;43 标注类别数…

浙大数据结构:01-复杂度2 Maximum Subsequence Sum

数据结构MOOC PTA习题 01-复杂度2 Maximum Subsequence Sum #include <iostream> using namespace std; const int M 100005; int a[M]; int main() {int k;cin >> k;int f 1;for (int i 0; i < k; i){cin >> a[i];if (a[i] > 0)//如果出现大于0则…

minio实现大文件断点续传

最近工作中遇到一个需求&#xff0c;用户需要上传大文件几百M&#xff0c;为了更好的用户体验&#xff0c;需要支持断点续传&#xff0c;秒传&#xff0c;上传进度条等功能。需求如下&#xff1a; 方案有两种&#xff1a; 第一种&#xff1a;前端直接将整个大文件丢到后端&…

Android源码 ota升级

一、系统Setting添加A/B区&#xff0c;OTA升级涉及核心类 1.xml文件 路径&#xff1a;/packages/apps/Settings/res/xml/my_device_info.xml <?xml version"1.0" encoding"utf-8"?> <!--Copyright (C) 2018 The Android Open Source Project…

基于云函数的自习室预约微信小程序+LW示例参考

全阶段全种类学习资源&#xff0c;内涵少儿、小学、初中、高中、大学、专升本、考研、四六级、建造师、法考、网赚技巧、毕业设计等&#xff0c;持续更新~ 文章目录 [TOC](文章目录) 1.项目介绍2.项目部署3.项目部分截图4.获取方式 1.项目介绍 技术栈工具&#xff1a;云数据库…

【C++入门(5)】类和对象(初始类、默认成员函数)

一、初识类 1、struct C语言中&#xff0c;struct用来声明一个结构体&#xff0c;在C中&#xff0c;兼容了C语言的用法&#xff0c;struct可以用来声明一个结构体&#xff0c;除此之外&#xff0c;C还把struct升级为了类&#xff0c;引入了类和对象的概念。 类和结构体的不同…

前端脚手架你得会一点

背景 最近有个工作了4年的前端朋友跟我诉苦说他最近去到一个小公司&#xff0c;虽然开发很自由&#xff0c;但是效率却很低。细聊之后才知道&#xff0c;原来他们公司前端既没有成文的规范&#xff0c;也没有常用的开发模板&#xff0c;每次领导要开发新项目&#xff0c;之前的…