Es6中的拓展运算符参数解构在实际项目当中应用

news/2024/7/11 1:53:17 标签: es6, vue.js, javascript, elementui, 前端

77ee80ca2125e5295cef4cb572884222.jpeg

扩展操作符 ES6中引入的,将可迭代对象展开到其单独的元素中,常见的应用场景有:拷贝数组对象,合并数组,参数传递,数组去重,字符串转字符数组,解构变量等

单纯的学习某个技术知识点,很容易的,但是能在实际项目中运用进去,那就不简单了的

单纯的学习某个语言的语法,都相类似,但是多种技术融合起来,那就复杂了的

应用场景

  • 解构参数,传递参数

  • 向后端接口传递参数,拼接参数传递给后端

<template>
    <div>
       <div class="movie-item">
          <el-select
            class="move-item"
            v-model="videoForms.ztid"
            placeholder="视频专题"
            clearable
            size="small"
          >
                <el-option
                v-for="(item, index) in videoZhuanTiOptions"
                :key="index"
                :label="item.label"
                :value="item.ztid"
                >
                </el-option>
            </el-select>
          </div>
           <div class="movie-select">
                <el-select
                    class="move-item"
                    v-model="videoForms.zd"
                    placeholder="视频名称"
                    clearable
                    size="small"
                >
                    <el-option
                    v-for="(item, index) in videoSelectOptions"
                    :key="index"
                    :label="item.label"
                    :value="item.zd"
                    >
                    </el-option>
                </el-select>
                <el-input
                    size="small"
                    v-model="videoForms.key"
                    placeholder="请输入关键字"
                 >
           </div>
        <div>
          <el-button type="primary" size="small" @click="handleSearch">搜 索</el-button>
        </div>
    </div>    
</template>
<script>
    export default {
        name: 'resetParams',
        data() {
            return {
                data: [],  // 电影列表数据,初始化
                // 把form表单接口条件相关联的放置到一个对象下面管理,便于接口字段的管理
                page:1,  // 默认第一页
                limit: 20, // 默认返回20条数据
                total: '', // 分页总数据
                videoForms: {
                    ztid: '',  // 视频专题
                    zd: '',    // 视频筛选
                    key:'',  // 视频输入框关键字
                    year: '', // 年份
                    area: '',  // 地区
                    lang: '', // 语言
                    pay: '1',  // 1,免费,2收费,后端接口定义,默认免费
                    reco: '1',// 1,不轮播,2轮播
                    app: '', // app端是否展示
                    order: '', // 排序方式
                    kstime:'', // 开始时间
                    jstime: '' // 结束时间
                },
                videoZhuanTiOptions: [
                    {
                    label: "精品电影",
                    ztid: "6",          // ztid: '1',  视频专题,1代表精品国漫
                    },
                    {
                      label: "好莱坞电影",
                      ztid: "5",
                    },
                    {
                      label: "盗墓影视",
                      ztid: "4",
                    },
                    {
                      label: "鬼片大王",
                      ztid: "3",
                    },
                     {
                       label: "星爷电影",
                       ztid: "2",
                    },
                    {
                      label: "精品国漫",
                      ztid: "1",
                    },
                ],

                videoSelectOptions: [
                    {
                    label: "视频ID",
                    zd: "id",         //  zd: '', 视频筛选
                    },
                    {
                      label: "视频导演",
                      zd: "director",
                    },
                    {
                      label: "视频主演",
                      zd: "actor",
                    },
                ],
            }
        },

        methods: {
            // 获取影视列表接口数据
            async getVideoList() {
                try {    // 这里使用了try..cartch
                    let params = {   // 向后端请求的实参数
                       page:this.page,
                       limit: this.limit,
                       ...this.videoForms,
                    }
                    // Ajax请求接口,第一个参数是接口地止,第二个就是具体的参数,这里使用的是axios发送get请求数据
                    let res = await this.$axios.get(Interface.getVideoList,{ params });
                    if(res.code == 0) { // 说明成功
                       const { data }  = res.data;
                       this.data = data;  // 表格需要渲染的数据
                       this.total = res.data.count;
                    }
    
                } catch (err) {
                    // 如果请求接口报错,则扔出一个异常
                    console.log(err);
                }
                
            },
            // 搜索,查询影视列表接口
            handleSearch() {
                this.getVideoList();  // 调用请求影视列表查询接口
            }  
        }
    }
</script>

对象解构如下所示

var videoForms = {
    ztid: '',
    zd: '',
    key:'',  
    area: '',  
    lang: '', 
    pay: '1',  
    reco: '1',
    app: '',
    order: '', 
    kstime:'', 
    jstime: ''
}

var params = {
    page:1,
    limit: 20,
    ...videoForms
}
console.log(params);

在上面的示例代码码中,发送Axos请求使用的是axios库,在请求接口时,使用了try..catch,如果接口响应有错误,那么将错误返回给开发者

在有的项目里,做得比较好的,会统一进行处理的,进行错误的拦截的,对于getpost可以在进一步封装的

上面没有去过度的封装,对于初学者比较好理解,但是缺点也是显而易见的,就是每次逗得重复写相同的get请求或post请求

关于需要向后端传递的参数数据,在定义时,往往,把form表单接口条件相关联的放置到一个对象下面管理,这样便于接口字段的管理,添加和删除

普通基本数据类型初始化,尽量写在前面,而对象,数组字段,写在后面

这个不是唯一的,只是个人开发的习惯,因人而已

关于接口的字段参数,对于UI界面的渲染,正常的去开发就可以,前端开发者更多关注的是接口参数,接口具体返回的什么数据

关注NetWork面板的headers,与PayLoad,以及previewResponse

视频号如何做视频任务进行变现

2023-09-05

702310484d5ef9b6a3d3c26aecfb035c.jpeg

视频号如何插入带货商品链接进行变现

2023-09-04

dd033669a6cc22d1dd380cf6f3e9ed7e.jpeg

36岁男子自称被裁,曾是前500强公司市场总监,最后接受做外买

2023-09-03

7158bdd543fec1833e1be098e937e6c2.jpeg

聊一下互联网红利并牢牢抓住

2023-09-02

5efe8edf3ff883f7d942e1ebb0df5020.jpeg

关于大学考研与不考研自己一点看法

2023-09-01

c3718712c07ca1e288a22afb9cc6e791.jpeg

css中文本阴影特效

2023-08-30

99fdd826ca626a89c49f7b0f31bb43d5.jpeg

3fc12bb989ed4ab86e17a0233935e6b1.png

(能绘画,能问答)

2ef8b13010df925ebd2bdef3c787dbb4.jpeg


http://www.niftyadmin.cn/n/5009208.html

相关文章

U-net网络学习记录

U-net网络 本质上是一个用于图像分割的神经网络 输入是一幅图&#xff0c;输出是目标的分割结果。继续简化就是&#xff0c;一幅图&#xff0c;编码&#xff0c;或者说降采样&#xff0c;然后解码&#xff0c;也就是升采样&#xff0c;然后输出一个分割结果。根据结果和真实分…

redis多线程操作

今天更新一个redis多线程操作&#xff0c; 可直接搬运 import redis, os, threading, queue import pandas as pd# 创建一个任务队列 task_queue queue.Queue()def read_excel(folder_path):total_list []for filepath, dirnames, filenames in os.walk(folder_path):for fi…

Python数据分析实战-将dataframe某列的值分成不同区间并计算每个区间的频数(附源码和实现效果)

实现功能 将dataframe某列的值分成不同区间并计算每个区间的频数 实现代码 import pandas as pd# 创建dataframe data {Name:[Tom1, Jack1, Steve1, Ricky1, Tom2, Jack2, Steve2, Ricky2],Score:[78,60,59,42,88,34,69,142]} df pd.DataFrame(data) print(df)# 定义区间和…

标准C++day1——名字空间和堆内存管理

一、C介绍 本贾尼.斯特劳斯特卢普&#xff0c;于1979年在贝尔实验室负责分析UNIX系统内核流量的分布情况时&#xff0c;特别希望有一种更加模块化的工具&#xff0c;于1979.10开始着手研发一款新的编程语言&#xff0c;在C语言的基础上增加了面向对象的机制&#xff0c;也就是C…

HTTPS加密协议详解:HTTPS性能与优化

1、HTTPS性能损耗 前文讨论了HTTPS原理与优势&#xff1a;身份验证、信息加密与完整性校验等&#xff0c;且未对TCP和HTTP协议做任何修改。但通过增加新协议以实现更安全的通信必然需要付出代价&#xff0c;HTTPS协议的性能损耗主要体现如下&#xff1a; (1).增加延时 分析前…

Halcon不改变目标大小尺寸及坐标,放大图像或区域

如果需要检测一张图像中很细小的物体&#xff0c;计算机可能可以观察到&#xff0c;但人的肉眼很难判别。这时候就需要放大图像中目标所在区域进行观测&#xff0c;放大观察可能会导致图像被放大&#xff0c;目标相对原始图像的坐标大小信息会被改变。如下&#xff0c;分割图中…

org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata

org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata 报错原因 springboot 版本和springcloud 版本不一致环境 springboot 版本 2.5.4 原来的springcloud 版本 Hoxton.SR12 替换springcloud 版本为2020.0.3错误 2021-09-16 09:50:15.851 WARN 91…

随机流-RandomAccessFile

RandomAccessFile RandomAccessFile 基本操作案例 RandomAccessFile 基本操作 案例 import java.io.*;public class TestMain09 {public static void main(String[] args) throws Exception {insert("D:\\home\\product\\aa.txt",2,"ni");}public static…