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

news2024/11/19 5:47:06

💻博主现有专栏:

                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. 可以考虑在任务列表为空时隐藏统计区域,避免占用空间。

🎃实现效果

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

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

相关文章

MyBatis系统学习篇 - 分页插件

MyBatis是一个非常流行的Java持久层框架&#xff0c;它简化了数据库操作的代码。分页是数据库查询中常见的需求&#xff0c;MyBatis本身并不直接支持分页功能&#xff0c;但可以通过插件来实现&#xff0c;从而帮助我们在查询数据库的时候更加方便快捷 引入依赖 <dependen…

TCP/IP协议栈

一、TCP/IP协议栈和OSI参考模型对比 二、TCP/IP五层功能 三、TCP/IP模型的层间通信与数据封装 四、TCP/IP模型的层间通信与数据解封装

软考架构-计算机网络考点

会超纲&#xff0c;3-5分 网络分类 按分布范围划分 局域网 LAN 10m-1000m左右 房间、楼宇、校园 传输速率高 城域网 MAN 10km 城市 广域网 WAN 100km以上 国家或全球&#xff08;英特网&#xff09; 按拓扑结构划分 总线型&#xff1a;利用率低、干…

hcia datacom学习(11):vlan基础配置

1.vlan作用 &#xff08;1&#xff09;限制广播域&#xff1a;广播被限制在vlan内&#xff0c;不会在vlan间转发 &#xff08;2&#xff09;提高安全性&#xff1a;不同vlan的报文在传输时是相互隔离的 &#xff08;3&#xff09;灵活构建&#xff1a;交换机可以把不同终端分…

动态代理(黑马笔记)

一、BigStar 大明星类 package com.itheima.mydynamicproxy1; public class BigStar implements Star {//实现接口要重写里边的抽象方法private String name;public BigStar() {}public BigStar(String name) {this.name name;}//唱歌Override //表示重写接口中的方法public…

【C++课程学习】:类和对象(上)(类的基础详细讲解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f35f;1.1类的引出&#xff1a; &#x1f35f;1.2类的结构&#xff1a; &#x1f35f;1.3类的…

代码随想录算法训练营第四十四天 | 01背包问题理论基础、01背包问题滚动数组、416. 分割等和子集

背包问题其实有很多种&#xff0c;01背包是最基础也是最经典的&#xff0c;软工计科学生一定要掌握的。 01背包问题 代码随想录 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;| 关于背包问题&#xff0c;你不清楚的地方&#xff0c;这里都讲了&#xff01;| 动态规划经…

金士顿U盘被写保护的解决方法

1.适用的U盘芯片信息 USB设备ID: VID 0951 PID 1666 设备供应商: Kingston 设备名称: DataTraveler 3.0 设备修订版: 0110 产品制造商: Kingston 产品型号: DataTraveler 3.0 产品修订版: PMAP 主控厂商: Phison(群联) 主控型号: PS2251-07(PS2307) - F/W 08.03.50 [2018-…

怎么监控上网记录?监控上网记录的软件推荐

监控上网记录&#xff0c;可以防止员工摸鱼&#xff0c;许多企业为提高工作效率、保障网络安全、确保合规性而采取的措施之一。以下是几种常见的监控上网记录的方法&#xff1a; 1、安装专业电脑监控软件&#xff1a; 如“安企神”、“域智盾”、“中科安企”等&#xff0c;这…

定个小目标之每天刷LeetCode热题(10)

这道题属于一道中等题&#xff0c;看来又得背题了&#xff0c;直接看题解吧&#xff0c;有两种解法 第一种动态规划法 状态&#xff1a;dp[i][j] 表示字符串s在[i,j]区间的子串是否是一个回文串 状态转移方程&#xff1a;当s[i] s[j] && (j - i < 2 || dp[i 1]…

【数据结构】二叉树的存储结构

二叉树的存储结构 导读一、存储结构二、顺序存储结构三、链式存储结构结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 在前面的内容中&#xff0c;我们已经认识了树这种新的数据结构以及二叉树这种特殊的树。 与前面我们学习的线性…

Android 调试桥_ADB命令

Android 调试桥 ADB全称 【Android Debug Bridge】 是Android SDK中的一个命令行工具&#xff0c;adb命令可以直接操作管理Android模拟器或真实的Android设备&#xff08;手机&#xff09; ADB的工作原理 启动一个 adb 客户端时&#xff0c;此客户端首先检查是否有已运行的 …

逐步掌握最佳Ai Agents框架-AutoGen 十 Web应用

AutoGen系列来到了第十篇&#xff0c;从入门AutoGen,到熟悉chat agent工作方式&#xff0c;再到深入把玩RAG文档AI助理应用。终于&#xff0c;我们要结合Streamlit来做智能Web应用了。 Streamlit Streamlit是一款Web开发框架&#xff0c;适用于python快速完成一些大模型、数学…

直播美颜工具解析:美颜SDK核心技术与性能优化方法

本篇文章&#xff0c;小编将深入解析直播美颜SDK的核心技术及其性能优化方法&#xff0c;以期为开发者提供有价值的参考。 一、美颜SDK核心技术 1.实时人脸检测与识别 美颜SDK的核心技术之一是实时人脸检测与识别。这项技术基于深度学习算法&#xff0c;能够快速、准确地识别…

实验9 静态路由配置

实验9 静态路由配置 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 网络中的每个路由器都会维护一张路由表或转发表。路由表的表项记录着目的网络信息以及下一跳I 地址。路由表可以手动配置&#xff0c;也可以通过路由算法动态生成。静态…

kali配置静态ip

kali配置静态ip 因为一些环境需要&#xff0c;本地linux主机需要搭建一个桥接模式的网络&#xff0c;那么直接就在kali中配置了&#xff0c; 打开vim /etc/network/interfaces 这里就需要自己配置一下ip&#xff0c;网关&#xff0c;路由等内容 这里参考&#xff1a;参考链接 …

C++ STL初阶(2):string 的模拟实现

此文的背景是自己实现库中的string&#xff0c;由于string的模版实现较为困难&#xff0c;我们只实现最简单char版本。 1.命名空间分割 为了避免与库中的string冲突&#xff0c;我们使用一个自己的命名空间中来分离并实现所有内容&#xff0c;并且将所有的声明和定义相分离&…

Three.js-实现加载图片并旋转

1.实现效果 2. 实现步骤 2.1创建场景 const scene new THREE.Scene(); 2.2添加相机 说明&#xff1a; fov&#xff08;视场角&#xff09;&#xff1a;视场角决定了相机的视野范围&#xff0c;即相机可以看到的角度范围。较大的视场角表示更广阔的视野&#xff0c;但可能…

P3. 创建个人中心页面

P3. 创建个人中心页面 0 概述Tips1 个人中心页面1.1 创建 Bot 表及 pojo, mapper1.2 实现 Bot 增删改查的 API1.3 实现个人中心页面前端 0 概述 主要介绍了一下添加一个表(类)&#xff0c;及其CRUD的前端和后端的实现方式&#xff0c;介绍的是通用的方法。 后端的CRUD很好写&am…

【Java面试】十五、HashMap相关

文章目录 1、二叉树1.1 二叉搜索树1.2 红黑树 2、散列表2.1 哈希冲突2.2 哈希冲突 - 链表法 3、HashMap的实现原理4、HashMap源码4.1 属性部分4.2 构造函数部分 5、HashMap的put方法的流程6、HashMap的扩容机制7、HashMap的寻址算法8、为何HashMap底层的数组长度一定是2的次幂 …