5. 简单说一说uniapp中的语法吧

news2024/9/20 8:14:14

前言

如果你 知道Vue3并且对Vue3的语法有一定了解,请跳过这一章,由于后续项目主要是基于Vue3+TypeScript,因此提前简单概述一些Vue3的基础语法~

本文的目的是 期望通过对本文的阅读后能对Vue3的每个语法有一个简单的印象,至少要知道文中常见语法的作用是什么,算是进行比较初级的扫盲吧;

概述

阅读时间:约7~10分钟;

本文重点:

  • 通过本文你可以知道一些Vue3中的基本语法与结构;
  • 大致知道一下常见语法的作用是什么;

正文

看一个例子吧,我们通过示例代码进行说明,例子如下:

<template>
    <view class="app-container">
          <u-skeleton :rows="3" :title="false" loading />
    </view>
</template>

<script lang="ts" setup>
import { ref, type Ref } from 'vue';
const swiperList1 = ref([
    'https://cdn.uviewui.com/uview/swiper/swiper1.png',
    'https://cdn.uviewui.com/uview/swiper/swiper2.png',
    'https://cdn.uviewui.com/uview/swiper/swiper3.png',
]);

const loading = ref(false);

function refresh() {
    loading.value = true;

    setTimeout(() => {
        loading.value = false;
    }, 1000);
}
</script>

<style scoped lang="scss">
.app-container {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
}
</style>

这段代码是一个简单的uniapp中的某个页面,从整体结构上看看代码可以分成三部分,分别是由template,script,style三块组成(PS:这三块可以约等于视同前端领域中的HTML+Javascript+CSS)

template

template,类似于传统前端中的html部分,它主要的作用是制作页面的骨架、结构

思考一个场景,当我们前端拿到一张设计稿后首先应该做什么?肯定是先思考页面的整体结构,比如整体是上下结构还是左右结构,只有结构上思考完善了才考虑接下来的部分,否则一旦存在没有考虑到的情况,当某个功能点出现html结构不支持的时候那问题就大了...

静态显示

什么是静态显示?在开发中存在少部分页面是纯静态展示页面的,这部分页面不需要与后台交互,这类写法比较简单,直接写就是了

<template>
    <view class="app-container">
        <view class="app-title">这是本页面的标题</view>
    	<view class="app-content">这是本页面的内容</view>
    </view>
</template>

很简单,直接写,不需要其他配置

动态显示

和静态显示对应,动态显示是绝大多数页面上的显示方式,比如用户名显示,这个取决于登录用户是哪一个;

动态显示需要和script结合使用,在script存储变量名字,然后将变量嵌入到template里,进而变量的值是什么,页面上则显示什么;

双花括号

嵌入的核心语法:双花括号 语法,它的作用就是将变量嵌入到template中,如下

<template>
    <view class="app-container">
        <view class="app-title">这是本页面的标题</view>
		<view class="app-content">{{ text }}</view>
    </view>
</template>

<script lang="ts" setup>
const text="这是本页面的内容"
</script>

此时显示在页面上的text的区域文字是:这是本页面的内容

v-if(条件渲染)

除了正常的显示外,有这么一种情况,有时候需要对显示的内容进行一个判断,如果有值显示内容,如果没有值则显示“暂无内容”,这种v-if就起到作用了;

它书写的位置在template里的标签上,如下:

<template>
    <view class="app-container">
    	<view v-if="swiperList1.length>2">{{ text }}</view>
    	<view v-else-if="swiperList1.length===1">{{ text }}</view>
    	<view v-else>无显示内容</view>
    </view>
</template>

<script lang="ts" setup>
import { ref } from 'vue';

const text="这是本页面的内容"
const swiperList1 = ref([
    'https://cdn.uviewui.com/uview/swiper/swiper1.png',
    'https://cdn.uviewui.com/uview/swiper/swiper2.png',
    'https://cdn.uviewui.com/uview/swiper/swiper3.png',
]);
</script>

这里出现了关于v-if的一套用法,一共三个,分别是:v-if,v-else-if,v-else,含义也很好理解,哪个后面的条件符合就显示那个内容,如果都不满足,则显示v-else里面的

v-for(列表渲染)

除了条件渲染,还有这么种场景,页面上需要重复显示一列内容,如新闻列表,对于这种我们可以使用v-for进行重复显示

<template>
    <view class="app-container">
        <view class="app-title">这是本页面的标题</view>
        <view v-for="item in newsList" :key="item.id">{{ item.title }}</view>
    </view>
</template>

<script lang="ts" setup>
import { ref, type Ref } from 'vue';

const newsList = ref([
    {
        title: '新闻标题1',
        id: 1,
    },
    {
        title: '新闻标题2',
        id: 2,
    },
    {
        title: '新闻标题3',
        id: 3,
    },
]);

</script>

这样就可以快速显示三条信息

script

script,类似于传统前端中的Javascript部分,它的主要作用是进行逻辑处理,如动态获取页面内容

ref

ref,作用是 将变量的值定义为实时可变的,以上方双花括号为例

<template>
    <view class="app-container">
    	<view class="app-content">{{ text }}</view>
        <view class="app-content">{{ text1 }}</view>
    </view>
</template>

<script lang="ts" setup>
  import { ref } from 'vue';
  
  const text="这是本页面的内容";
  const text1=ref("这是本页面的内容");
</script>

这两个最大的区别是,text1显示的内容,会随着其值的变化而变化,text则是不会,举个场景例子吧;

我们页面上显示的内容往往是通过api从后端获取的,通过ref定义的值显示在页面上时,它能随时动态改变,比如

<template>
    <view class="app-container">
    	<view class="app-content">{{ text }}</view>
        <view class="app-content">{{ text1 }}</view>
    </view>
</template>

<script lang="ts" setup>
  import { ref } from 'vue';
  
  let text="这是本页面的内容";
  const text1=ref("这是本页面的内容");

  setTimeout(()=>{
    // 修改值必须修改其value值,不能直接text1="xxxx"
    text1.value="修改后的值"

    // 不使用ref则不需要使用到value,可直接修改
    text="修改后的值"
  },2000)
</script>

2秒后,text1显示在页面上的值会从"这是本页面的内容"变成"修改后的值", 如果不使用ref则不管怎么修改text,显示在页面上的值仍然是"这是本页面的内容";

computed

计算属性,computed,其作用是被动的,动态的,改变值,可能不太好理解,举个例子吧,比如我们要显示的是列表中一共有多少行,如果使用ref那么我们需要这么写

<template>
    <view class="app-container">
        <view class="app-title">{{ number }}</view>
    </view>
</template>

<script lang="ts" setup>
import { ref, computed } from 'vue';

const data: any = ref([]);
const number = ref(0);

setTimeout(() => {
    data.value = [
        {
            name: '1',
            value: 1,
        },
        {
            name: '2',
            value: 2,
        },
    ];

    number.value = data.value.length;
}, 2000);
</script>

如果使用computed就简单一些,它能被动的,根据值进行动态变化

<template>
    <view class="app-container">
        <view class="app-title">{{ number }}</view>
    </view>
</template>

<script lang="ts" setup>
import { ref, computed } from 'vue';

const data: any = ref([]);
const number = computed(() => data.value.length);

setTimeout(() => {
    data.value = [
        {
            name: '1',
            value: 1,
        },
        {
            name: '2',
            value: 2,
        },
    ];
}, 2000);
</script>

watch

和computed不同,watch的目的是主动的监听某一个变量,当这个变量发生变化时以便我们主动的做出一些应对措施;

<template>
    <view class="app-container">
        <view class="app-title">{{ number }}</view>
    </view>
</template>

<script lang="ts" setup>
import { ref, watch } from 'vue';

const data: any = ref([]);
const number = ref(0);

setTimeout(() => {
    data.value = [
        {
            name: '1',
            value: 1,
        },
        {
            name: '2',
            value: 2,
        },
    ];
}, 2000);

// 监听data的变化
watch(
    () => data.length,
    (value) => {
        // 具体的应对措施
        number.value = value.length;
    }
);
</script>

style

style,类似于传统前端中的CSS部分,它的主要作用是将骨架template以更美观的形式展现到用户面前,和传统CSS不同的是,在Vue中的style是支持三方库的,比如sass,less

lang

其作用是指的css的类型,比如指的style中的语法是less


<style lang="less">
.app-container {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

.app-title {
    font-size: 24px;
    font-weight: bold;
}
</style>

值得注意的是,如果想要使用这些三方库并没有天然的集成在里面,使用前要进行安装

scoped

scoped,其作用是防止样式污染,比如,我们在a页面存在一个样式名叫做"app-container",然后在b页面也存在一个样式名叫做"app-container",这是该怎么办?通常有两种做法

  • 第一种:修改掉其中一个样式名;
  • 第二种:都加上scoped,加上scoped之后,Vue会主动的给每一个样式加上唯一的标签,使其不会污染到别的页面里面的样式;
<style scoped>
.app-container {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

.app-title {
    font-size: 24px;
    font-weight: bold;
}
</style>

本章小结

本章简单的分享了一下在Vue3中常用到的几种语法,通过本章我们知道了:

  • 一个正常的Vue或者说uniapp页面通常包含三部分,别分是:template,script,style;
  • template约等于传统前端开发的html,是页面的骨架;
  • script约等于传统前端开发的Javascript,是页面上的逻辑;
  • style约等于传统前端开发中的css,是用来丰富页面上显示效果;

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

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

相关文章

【Linux】动态库与静态库的底层比较

送给大家一句话&#xff1a; 人生最遗憾的&#xff0c;莫过于&#xff0c;轻易地放弃了不该放弃的&#xff0c;固执地坚持了不该坚持的。 – 柏拉图 (x(x_(x_x(O_o)x_x)_x)x) (x(x_(x_x(O_o)x_x)_x)x) (x(x_(x_x(O_o)x_x)_x)x) 底层比较 1 前言2 编译使用比较2 如何加载Than…

连升三级!openGauss单机版从2.1.0经停3.0.0升级至5.0.0

前言 如前文所述&#xff0c;我们的小demo项目起初安装了openGauss的2.1.0版本&#xff0c;由于2.1.0不是长期维护&#xff08;LTS&#xff09;版本&#xff0c;所以要升级到5.0.0LTS。考虑到虽然是DEMO项目&#xff0c;但也有些体验用户&#xff0c;所以为了保障业务连续性&a…

网络基础-Telnet协议

Telnet&#xff08;Telecommunication Network&#xff09;是一种基于文本的远程终端协议&#xff0c;允许用户通过网络连接到远程计算机&#xff0c;并在远程计算机上执行命令&#xff1b;它使用TCP作为传输层协议&#xff0c;并依赖于网络连接在客户端和服务器之间进行通信&a…

商务分析方法与工具(九):Python的趣味快捷-Pandas处理公司财务数据集思路

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Linux部署

先把需要的东西准备好&#xff1a; 第一步解压tomcat&#xff1a; tar -zxvf apache-tomcat-8.5.20.tar.gz 第二步解压jdk: tar -zxvf jdk-8u151-linux-x64.tar.gz 第三步配置Java环境变量&#xff1a; vim /etc/profile 把下面代码放进去&#xff1a; export JAVA_HOME/root…

定时任务的几种实现方式

定时任务实现的几种方式&#xff1a; 1、JDK自带 &#xff08;1&#xff09;Timer&#xff1a;这是java自带的java.util.Timer类&#xff0c;这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行&#xff0c;但不能在指定时间运行。…

基于SpringBoot+Vue社区老人健康信息管理系统

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统社区老人健康信息管理系统信息管理难度大&#xff0c;容错…

网络爬虫概述与原理

网络爬虫概述与原理 网络爬虫简介狭义上理解功能上理解常见用途总结 网络爬虫分类通用网络爬虫聚焦网络爬虫增量网络爬虫深度网络爬虫 网络爬虫流程网络爬虫采集策略深度有限搜索策略广度优先搜索策略 网络爬虫简介 通过有效地获取网络资源的方式&#xff0c;便是网络爬虫。网…

【SpringBoot】解锁后端测试新境界:学习Mockito与MockMvc的单元测试魔法

文章目录 前言&#xff1a;Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入&#xff08;AutoWired、 Resource&#xff09;2.Mock注入2.1.前言2.2…

数据结构复习指导之树、森林

文章目录 树、森林 考纲内容 复习提示 1.树的存储结构 1.1双亲表示法 1.2孩子表示法 1.3孩子兄弟表示法 2.树、森林、与二叉树的转换 2.1树转换为二叉树 2.2森林转换为二叉树 2.3二叉树转换为森林 3.树和森林的遍历 3.1树的遍历 3.2森林的遍历 树、森林 考纲内容…

开源推荐榜【FunClip是一款完全开源、本地部署的自动化视频剪辑工具】

FunClip是一款完全开源、本地部署的自动化视频剪辑工具&#xff0c;通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别&#xff0c;随后用户可以自由选择识别结果中的文本片段或说话人&#xff0c;点击裁剪按钮即可获取对应片段的视频&#xff08;…

zookeeper安装集群模式

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 ZooKeeper是一个分…

JeeSite V5.7.0 发布,Java快速开发平台,Vite5、多项重构重磅升级

JeeSite V5.7.0 发布&#xff0c;Java快速开发平台&#xff0c;Vite5、多项重构重磅升级 升级内容 新增 参数配置 IP 地址黑白名单过滤器动态参数 新增 侧边栏是否展开第一个菜单的开关 first-open 新增 AesTypeHandler 处理字段数据加密解密或脱敏 新增 JsonTypeHandler …

247 基于matlab的梁的振型仿真

基于matlab的梁的振型仿真。利用有限元理论&#xff0c;求二维梁的固有频率和振型。短边固定&#xff0c;给定长度、横截面积&#xff0c;弹性模量及材料密度已知。并对比理论计算结果进行分析。各参数自己设定。程序已调通&#xff0c;可直接运行。 247 梁的振型仿真 固有频率…

Linux环境下parted工具使用

在工作中&#xff0c;我们经常会遇到大于分区大于2T的磁盘&#xff0c;由于系统盘最大不能超2T&#xff0c;我们会在做raid时将划分VD来进行装系统&#xff0c;但系统自动安装后无法将磁盘全部识别出来&#xff0c;管理员有时会要求手动对分区进行挂载&#xff0c;这个文档介绍…

收放卷伺服控制系统详细算法介绍(电子齿轮+张力PID卷绕轴控制功能块)

收放卷控制系统涉及的内容非常多,这里我们介绍全伺服系统利用电子齿轮指令实现主从轴的比例随动速度控制,收放卷控制算法介绍常用链接如下 1、收放卷+排线控制 收放卷+排线控制系统框图-CSDN博客文章浏览阅读24次。1、收放卷前馈量计算FC收放卷前馈量计算FC(CODESYS ST源代…

将python库下载到本地安装—Pypi官网wheel版本选择详解—小白详解版

python库—本地安装文件下载&#x1f680; 在项目中需要在内网环境下配置python的环境&#xff0c;因此需要将用于安装python库的文件下载到本地传到内网环境当中然后再安装&#xff0c;通过这契机我开始了解了一下如何离线下载安装python的第三方库&#xff0c;以及配置本地的…

【Docker】Ubuntu下Docker的基本使用方法与常用命令总结

【Docker】docker的基本使用方法 镜像image与容器container的关系基本命令- 查看 Docker 版本- 拉取镜像- 查看系统中的镜像- 删除某个镜像- 列出当前 Docker 主机上的所有容器&#xff0c;包括正在运行的、暂停的、已停止的&#xff0c;以及未运行的容器- 列出当前 Docker 主机…

Matlab 验证 复数的幂计算规则

复数的幂计算规则 close all a9; b0:0.1:5;result1 exp(1j*2*pi*a.*b); result2 (exp(1j*2*pi*a)).^b; idxfind(result1result2); b_idxb(idx);figure plot(b,angle(result1(:)),-r*) hold on plot(b,angle(result2(:)),bo) grid on

C++内存管理(1)

目录 1.new用法说明 2.new/delete在栈里面的运用 3.operator new/operator delete函数 4.构造函数的显式调用 5.malloc&&new&&free&&delete区别 1.new用法说明 &#xff08;1&#xff09;在C语言阶段&#xff0c;我们无论是为数组开辟空间&#x…