【Vue】——前端框架的基本使用

💻博主现有专栏:

                C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,设计模式、Python机器学习等
🥏主页链接:

                Y小夜-CSDN博客

目录

🎯本文目的

🎯利用Vite构建Vue项目code1—手动创建项目

🎯跑马灯效果

🎃要求

🎃代码

🎃实现效果

🎯实现景点展示

🎃要求

🎃代码解析

🎃实现效果

🎯实现迷你记事本

🎃要求

🎃代码解析

🎃实现效果


🎯本文目的

(一)掌握Vue.js中的属性绑定指令v-bind的使用;

(二)掌握Vue.js中和双向数据绑定指令v-model和修饰符的使用;

(三)掌握Vue.js中v-if指令和v-show指令控制元素隐藏和显示时的区别;

(四)掌握Vue.js中v-for指令的使用和key属性的作用 

(五)掌握Vue.js中事件修饰符的使用。

🎯利用Vite构建Vue项目code1—手动创建项目

步骤1:在实验四作业代码文件夹下打开DOS命令窗口,输入如下命令:

npm create vite@latest,然后回车,进到下面图,输入y回车,如图。

步骤2:在图中输入项目名称:code1,进入下图选择Vue回车。

步骤3: 在图中选择JavaSript后

步骤4:执行cd code1命令,切换到项目目录code1下,如图所示

步骤5:执行npm install命令,安装项目的全部依赖,成功后如下图

步骤6:执行npm run dev命令,运行项目,成功后如下图

步骤7:按下Ctrl健,单击http://127.0.0.1:5173/,在浏览器中可以看到项目的运行结果

到此项目code1创建并运行完成。

🎯跑马灯效果

🎃要求

要求:1、熟悉组件模版结构。

2、在上面程序“输入代码”中添加代码并修改组件模版结构相应的代码实现如下功能。

(1)单击图片上的向左和向右箭头可以浏览图片。

        (2)当显示到最后一张图片时,向右箭头隐藏;当显示到第一张图片时,向左箭头隐藏。

🎃代码

<!-- 图片切换案例 -->
<template>
    <h1 align="center">软工</h1>
    <h1>洛阳牡丹甲天下,花开时节动京城</h1>
    <div id="box">
        <img :src="imgArr[index]" alt="">
        <a href="javascript:;" @click="left" v-show="index != 0">
            <img class="imgl" src="../assets/images/left.png">
        </a>
        <a href="javascript:;" @click="right" v-show="index != 9">
            <img class="imgr" src="../assets/images/right.png">
        </a>
    </div>
</template>
<script setup>
//输入代码
import { ref } from 'vue';

const index = ref(0)
const left = () => {
    index.value--
}
const right = () => {
    index.value++
}
const imgArr = ["/src/assets/images/mudan1.jpg",
    "/src/assets/images/mudan2.jpg",
    "/src/assets/images/mudan3.jpg",
    "/src/assets/images/mudan4.jpg",
    "/src/assets/images/mudan5.jpg",
    "/src/assets/images/mudan6.jpg",
    "/src/assets/images/mudan7.jpg",
    "/src/assets/images/mudan8.jpg",
    "/src/assets/images/mudan9.jpg",
    "/src/assets/images/mudan10.jpg"
]


</script>
<style scoped>
#box {
    width: 400px;
    margin: 0 auto;
    position: relative;
}

h1 {
    text-align: center;
}

#box>img {
    width: 100%;
    height: 300px;
    /*overflow: hidden;   消除误差*/
    display: block;
    /*消除误差*/
}

a>img {
    width: 30px;
    height: 50px;
    position: absolute;
}

a>.imgl {
    left: 0;
    top: 125px;
}

a>.imgr {
    right: 0;
    top: 125px;
}</style>
    

这段代码是一个Vue.js的图片切换案例。它包含一个HTML模板、JavaScript代码和CSS样式。

HTML模板部分:
- 页面顶部有一个居中的标题"软工",下方有一个标题"洛阳牡丹甲天下,花开时节动京城"。
- 在`<div id="box">`中,有一个图片元素`<img>`,它的`alt`属性为空。
- 有两个超链接`<a>`,分别用于向左和向右切换图片。它们的`href`属性为空,点击时会触发对应的`left`和`right`函数。
- 左箭头图片使用`<img class="imgl">`表示,右箭头图片使用`<img class="imgr">`表示。

JavaScript代码部分:
- 引入了Vue的`ref`函数,用于创建响应式引用。
- 定义了一个名为`index`的响应式引用,初始值为0。
- 定义了两个函数`left`和`right`,分别用于向左和向右切换图片。这两个函数通过修改`index`的值来实现图片切换。
- 定义了一个名为`imgArr`的数组,包含了10个图片的路径。

CSS样式部分:
- 设置`#box`的宽度为400px,并使其水平居中显示。
- 设置标题`h1`为居中对齐。
- 设置图片`<img>`的宽度为100%,高度为300px,并消除误差。
- 设置左右箭头图片的宽度为30px,高度为50px,并设置它们的位置。

总结:
这段代码实现了一个简单的图片切换功能,用户可以通过点击左右箭头来切换不同的图片。

🎃实现效果

🎯实现景点展示

🎃要求

要求:1、熟悉组件模版结构。

2、在上面代码中的“添加代码”处添加适当的代码实现如下功能:

(1)单击“添加景点”按钮在表格末尾添加一行,如图所示。

        (2)单击,每一行后面的“删除”按钮,可以删除对应的行。

🎃代码解析

<template>
    <h1 align="center">软工</h1>
      <!-- //添加代码 -->
    <button class="btn" @click="add">添加景点</button>
    <table>
        <tr>
            <th>序号</th>
            <th>省份</th>
            <th>省会</th>
            <th>旅游景点</th>
            <th>操作</th>
        </tr>
        <tr v-for="(item,index) in list">
            <td>{{ index+1 }}</td>
            <td>{{ item.province }}</td>
            <td>{{ item.city }}</td>
            <td>{{ item.spot }}</td>
            <td><button @click="del(index)">删除</button></td>
        </tr>
    </table>
    </template>
    
    <script setup>
    import { reactive } from 'vue'
    const list = reactive([
        { province: "河南省", city: "郑州市", spot: "少林寺" },
        { province: "河南省", city: "洛阳市", spot: "龙门石窟" },
        { province: "湖北省", city: "长沙市", spot: "橘子洲头" },
        { province: "湖南省", city: "武汉市", spot: "黄鹤楼" },
    ])
    //添加代码
    const add=()=>{
        var str={province:"山东省",city:"青岛市",spot:"日照"};
        list.push(str);
    }
    const del=(x)=>{
        list.splice(x,1);
    }
    </script>
    
    <style scoped>
    button.btn {
        margin-bottom: 20px;
    }
    
    table {
        border: 3px solid red;
        border-collapse: collapse;
    }
    
    td,
    th {
        border: 1px solid red;
    }
    </style>
    

这段代码是一个使用Vue.js框架编写的简单网页应用。它包含一个表格,用于展示旅游景点的信息,以及添加和删除景点的功能。

首先,让我们来看一下HTML部分:

1. `<h1 align="center">软工</h1>`:这是一个居中的标题,显示文本"软工"。
2. `<button class="btn" @click="add">添加景点</button>`:这是一个按钮,点击时会触发`add`方法,用于添加新的景点。
3. `<table>`:这是一个表格,用于展示旅游景点的信息。
4. `<tr v-for="(item,index) in list">`:这是一个循环,遍历`list`数组中的每个元素(即每个景点),并将其渲染为表格的一行。
5. `<td>{{ index+1 }}</td>`、`<td>{{ item.province }}</td>`、`<td>{{ item.city }}</td>`、`<td>{{ item.spot }}</td>`:这些是表格的单元格,分别显示景点的序号、省份、城市和景点名称。
6. `<td><button @click="del(index)">删除</button></td>`:这是一个删除按钮,点击时会触发`del`方法,并传入当前景点的索引,用于删除该景点。

接下来,让我们看一下JavaScript部分:

1. `import { reactive } from 'vue'`:从Vue.js中导入`reactive`函数,用于创建响应式数据。
2. `const list = reactive([...])`:创建一个响应式数组`list`,包含一些初始的旅游景点信息。
3. `const add=()=>{...}`:定义一个`add`方法,用于添加新的景点。在这个方法中,我们创建一个新的景点对象,并将其添加到`list`数组中。
4. `const del=(x)=>{...}`:定义一个`del`方法,用于删除指定的景点。在这个方法中,我们使用`splice`方法从`list`数组中删除指定索引的元素。

最后,让我们看一下CSS部分:

1. `button.btn {...}`:设置按钮的样式,包括外边距。
2. `table {...}`:设置表格的样式,包括边框和边框合并属性。
3. `td, th {...}`:设置表格单元格的样式,包括边框。

总的来说,这段代码实现了一个简单的旅游景点信息展示和编辑功能。用户可以通过点击按钮来添加新的景点,或者点击删除按钮来删除指定的景点。所有的操作都会实时反映在表格中。

🎃实现效果

🎯实现迷你记事本

🎃要求

要求:熟悉组件模版结构。

  1. 补充完整程序,运行结果如图5-5所示,并实现如下功能:

(1)在文本框中输入内容后单击回车键会添加到列表中。

(2)鼠标移动到每列后面的图标上单击可以删除相应内容。

(3)鼠标单击“clear”可以将所有列表内容删除。

(4)统计区域左侧始终统计记录的条数。

(5)当列表都被删除了,统计区的内容不显示。

🎃代码解析

<!-- 迷你记事本案例 -->
<template>
    <h1 align="center">软工</h1>
        <h2>迷你记事本</h2>
        <div id="box">
          <!-- 写区域 -->
          <div class="write">
            <input type="text"  placeholder="请输入任务......" v-model="inputValue"  @keyup.enter="add">
          </div>
          <!-- 显示区域 -->
          <ul>
             <li  v-for="(item,index) in list">{{ index+1+": " }}{{ item }}         
    <img src="../assets/images/delect.png"   @click="remove(index)">
            </li>
          </ul>
          <!-- 统计区域 -->
          <div class="count">
             <span class="left"   v-text= "'共'+list.length+'项'"   v-if="list.length"></span>
             <span class="right"  @click=" clear"   v-if="list.length" >Clear</span>
          </div>     
     </div>
    </template>
    
    <script setup>
    import { reactive, ref } from 'vue';
    const list = reactive(["学习", "吃饭", "购物"])
    const inputValue = ref("")
    //添加add方法定义
    const add=()=>{
        list.push(inputValue.value);
        inputValue.value="";
    }
    //删除remove方法定义
    const remove=(x)=>{
        list.splice(x,1)
    }
    //清除clear方法定义
    const clear=()=>{
        list.length=0
    }
    </script>
    
    <style scoped>
    ul,
    li {
        padding: 0;
        margin: 0;
    }
    
    #box {
        width: 300px;
        margin: 20px auto 0 auto;
        border:3px solid #ccc;
        background-color: #eee;
        border-radius: 5px;
    }
    
    h2 {
        text-align: center;
        margin-bottom: 10px;
        color: red;
    }
    
    div.write>input {
        height: 35px;
        width: 288px;
        border: none;
        border-bottom: 1px solid #ccc;
        padding-left: 10px;
        font-size: 20px;
        font-style: italic;
        outline: none;
    }
    
    ul {
        list-style: none;
        background-color: #fff;
        padding-left: 10px;
        padding-right: 10px;
    }
    
    ul>li {
        line-height: 38px;
        color: #000;
        font-size: 20px;
        border-bottom: 1px solid #ccc;
        position: relative;
    }
    ul>li:last-child{
        border-bottom: none;
    }
    ul>li>img {
        width: 24px;
        position: absolute;
        right: 0;
        top: 9px;
        display: none;
        cursor: pointer;
    }
    
    ul>li:hover>img {
        display: block;
    }
    
    div.count {
        height: 20px;
        color: #000;
        font-size: 12px;
        padding: 8px 10px 0 10px;
        position: relative;
    }
    
    div.count>span.right {
        float: right;
        cursor: pointer;
    }
    </style>
    

这段代码是一个使用Vue.js框架实现的迷你记事本应用。它包括一个输入框用于添加任务,一个列表显示所有任务,以及一个统计区域显示任务总数和清除按钮。

首先,我们来看一下HTML部分:

1. `<template>`标签内包含了整个应用的HTML结构。
2. 在`<div id="box">`内,有三个主要部分:写区域、显示区域和统计区域。
3. 在写区域,有一个输入框`<input type="text" v-model="inputValue" @keyup.enter="add">`,用户可以在其中输入任务。输入的任务会被双向绑定到`inputValue`变量上。当用户按下回车键时,会触发`add`方法。
4. 在显示区域,有一个无序列表`<ul>`,其中每个列表项`<li>`都包含一个任务文本和一个删除图标。点击删除图标会触发`remove`方法。
5. 在统计区域,有两个`<span>`元素,分别显示任务总数和清除按钮。点击清除按钮会触发`clear`方法。

接下来,我们看一下JavaScript部分:

1. 使用Vue.js的`reactive`函数创建了一个响应式数组`list`,用于存储所有的任务。
2. 使用Vue.js的`ref`函数创建了一个响应式引用`inputValue`,用于存储输入框的值。
3. 定义了三个方法:`add`、`remove`和`clear`。`add`方法用于将输入框的值添加到任务列表中;`remove`方法用于从任务列表中删除指定索引的任务;`clear`方法用于清空任务列表。

最后,我们看一下CSS部分:

1. 为整个应用设置了一些基本样式,如宽度、边距、边框等。
2. 为各个元素设置了具体的样式,如字体大小、颜色、位置等。

优化建议:

1. 可以考虑为删除图标添加一个提示信息,让用户知道点击它可以删除任务。
2. 可以考虑在输入框为空时禁用添加按钮,避免添加空任务。
3. 可以考虑在任务列表为空时隐藏统计区域,避免占用空间。

🎃实现效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超声波清洗机哪个品牌好用点?四款超卓超声波清洗机疯狂安利!

在这个注重效率与清洁卫生的时代&#xff0c;小型超声波清洗机因其便携性、高效能以及出色的清洁效果&#xff0c;成为了家庭和小型工作室的必备神器。无论是清洗珠宝、眼镜、化妆刷&#xff0c;还是日常的金属餐具和电子产品&#xff0c;小型超声波清洗机都能轻松应对&#xf…

操作失败——后端

控制台观察&#xff0c;页面发送的保存菜品的请求 返回的response显示&#xff1a; ---------- 我开始查看明明感觉都挺正常&#xff0c;没啥错误&#xff0c;就是查不出来。结果后面电脑关机重启后&#xff0c;隔一天看&#xff0c;就突然可以了。我觉着可能是浏览器的缓存没…

C# 声音强度图绘制

C# 声音强度图绘制 采集PCM音频数据 音频原来自麦克风 音频源来自录音文件 处理PCM音频数据 将PCM数据进行强度值换算 private void UpdateVoice(double[] audio){// 计算RMS值double rms Math.Sqrt(audio.Select(x > x * x).Average());// 将RMS值转换为分贝值&#x…

常用的接口测试工具

大家好&#xff0c;当谈到软件开发中的质量保证时&#xff0c;接口测试无疑是至关重要的一环。在当今快节奏的开发环境中&#xff0c;确保应用程序的各个组件之间的交互正常运作是至关重要的。而接口测试工具则成为了开发人员和测试人员的得力助手&#xff0c;帮助他们有效地测…

Java版电商平台B2B2C:多商家直播商城系统特性解析

B2B2C平台&#xff0c;立足于传统电商领域&#xff0c;同时引入了创新的商业模式。该平台不仅支持商家入驻和平台自营&#xff0c;还积极构建了一个全新的市场环境&#xff0c;旨在为各行各业及互联网创业者提供更多收益机会。 该平台以消费者需求为中心&#xff0c;帮助企业构…

什么是人机协同翻译

什么是人机协同翻译 序什么是人机协同翻译账号绑定服务开通文档翻译图片翻译体验感受及建议 序 什么是人机协同翻译&#xff0c;为什么会需要人机协同翻译&#xff0c;以及人机协同翻译的效果&#xff0c;应用场景等&#xff0c;本文将关于这些内容一一解答。 什么是人机协同…

全平台自定义小程序源码系统 一个后台控制7端 自主设计属于你的小程序 前后端带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;小程序以其轻量级、跨平台、即用即走的特点&#xff0c;成为企业、个人及开发者们追捧的热门工具。为了满足不同用户的需求&#xff0c;小编给大家分享一款全平台自定义小程序源码系统。该系统通过一套强大的后台管理系统&#xff0c;实…

SD NAND的垃圾回收机制:无人机数据管理的隐形守护者

随着科技的飞速发展&#xff0c;无人机在各个领域的应用越来越广泛&#xff0c;从航拍到物流配送&#xff0c;再到农业监测&#xff0c;无人机正逐渐成为我们生活中不可或缺的一部分。而SD NAND作为一种创新的存储芯片&#xff0c;可以直接贴片使用&#xff0c;具有小尺寸、高可…

机台数据导出难住IT管理员,如何才能解决IT人员的困境?

为了方便数据的共享、保存、分析、合规性和迁移等目的&#xff0c;企业会按规律性的时间周期进行机台数据的导出操作&#xff0c;通过专业的数据迁移软件、外部存储设备&#xff08;如USB硬盘、移动硬盘、SD卡等&#xff09;&#xff0c;或者通过机台设备的专用导出功能来完成。…

MoE 混合专家模型(Mixture of Experts)

参考&#xff1a;深度揭秘爆火MoE&#xff01;GPT-4关键架构&#xff0c;成开源模型逆袭杀手锏 (baidu.com) MoE是一种神经网络架构设计&#xff0c;在Transformer模块中集成了专家/模型层。 当数据流经MoE层时&#xff0c;每个输入token都会动态路由到专家子模型进行处理。当…

使用Rufus工具制作Ubuntu To Go——很详细

一、准备工作 准备工具&#xff1a; 1、下载Rufus(主角)软件 2、准备一个U盘或硬盘&#xff08;小白128G足够&#xff0c;装Ubuntu系统&#xff09; 3、下载Ubuntu系统镜像文件 1、下载软件Rufus 先来看一下官网介绍&#xff1a; Rufus 是一款格式化和创建 USB 启动盘的辅助工…

直播商城源码-PC+APP+H5+小程序现成源码

随着电商行业的不断演进&#xff0c;直播商城已成为连接消费者和商品的新兴桥梁。直播商城源码提供了一个完整的解决方案&#xff0c;使得企业能够迅速搭建起一个覆盖PC、APP、H5和小程序的全渠道电商平台。本文将探讨直播商城源码的优势、关键功能以及如何选择适合的现成源码。…

银河麒麟操作系统 v10 离线安装 mysql 8.4.0

一 查看系统环境 [root0003 ~]# cat /etc/os os-release ostree/ [root0003 ~]# cat /etc/os-release NAME"Kylin Linux Advanced Server" VERSION"V10 (Lance)" ID"kylin" VERSION_ID"V10" PRETTY_NAME"Kylin Linux Ad…

嵌入式Linux系统编程 — 1.5 文件描述符详解

目录 1 文件描述符简介 1.1 文件描述符特点 1.2 标准文件描述符 1.3 文件描述符的生命周期 2 fcntl()函数 2.1 fcntl()函数简介 2.2 复制文件描述符(F_DUPFD) 2.3 获取/设置文件状态标志(F_GETFL/F_SETFL ) 1 文件描述符简介 文件描述符&#xff08;File Descriptor&a…

绘画新手必备!六款免费易用的绘图软件推荐

在当今的数字世界里有各种各样的设计创作工具&#xff0c;那么问题来了我们应该如何在众多免费绘图软件中选择呢&#xff1f;为了回答这个问题&#xff0c;我们将在本文中介绍和测评六个领先的绘图软件。每一个都有自己独特的特点和优势&#xff0c;适合不同的需求和用户。以下…

Django缓存

由于Django是动态网站&#xff0c;所有每次请求均会去数据进行相应的操作&#xff0c;当程序访问量大时&#xff0c;耗时必然会更加明显&#xff0c;最简单解决方式是使用&#xff1a;缓存&#xff0c;缓存将一个某个views的返回值保存至内存或者memcache中&#xff0c;若某个时…

C++设计模式-策略模式,AI角色动态选择行为

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 27. 策略模式 策略模式让算法的选择与使用独立开来&#xff0c;使得代码更灵活、可扩展和易维护。应用&#xff1a;如在游戏开发中&#xff0c;AI角色需要根据环境和条件做出不同的行为&#xff0c;如寻路、攻击、躲避等。可…

【优选算法】栈 {何时使用栈结构?后缀表达式求值;中缀转后缀表达式;中缀表达式求值}

一、经验总结 何时使用栈结构解题&#xff1f; 做过相似的使用栈结构解得的题目嵌套处理&#xff1a;在从前向后处理的过程中&#xff0c;由于之后内容的不确定性而导致当前操作不能贸然进行&#xff0c;需要先进行保存&#xff0c;直到遇到区间结束标志&#xff08;如’)&am…

2024年船舶、机械制造与海洋科学国际会议(ICSEMMS2024)

2024年船舶、机械制造与海洋科学国际会议&#xff08;ICSEMMS2024&#xff09; 会议简介 我们诚挚邀请您参加将在重庆隆重举行的2024年国际造船、机械制造和海洋科学大会&#xff08;ICSEMMS024&#xff09;。作为一项跨学科和跨学科的活动&#xff0c;本次会议旨在促进造船…

PostgreSQL专家(pcp51)--王丁丁

#PostgreSQL培训 #postgresql认证 #postgreSQL考试 #PG考试 #PG培训