Vue基础部分

devtools/2025/3/18 21:04:28/

继之前的html css js 之后,我们过度到js框架。
vue是一款用于构建用户界面的渐进式js框架

及基于数据渲染出用户看到的界面
在这里插入图片描述
框架,就是一套完整的项目解决方案

准备

  • 引入vue模块
  • 创建vue应用实例,控制视图元素
  • 准备元素div,被vue控制

数据驱动视图

  • 准备数据

  • 通过插值表达式渲染页面

    通过 mount 将 Vue 实例挂载到指定的 DOM 元素上

javascript"><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue快速入门</title>
</head>
<body><div id="app"><!-- 通过插值表达式{{message}}输出数据 --><h1>{{message}}</h1><h1>{{count}}</h1></div><script type="module">// 导入Vueimport {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';// 接管应用实例createApp({// 定义数据, 返回一个数据模型data(){return {message: 'Hello Vue!',count: 100}    }            }).mount('#app');</script>
</body>
</html>

常用指令

在这里插入图片描述
实际上vue就是html的特殊属性,以v-标识

以下根据案例进行学习

员工列表数据渲染展示 v-for

在这里插入图片描述
注意:

javascript"><!-- 插值表达式是不能出现在标签内部的 --><!-- 但是可以使用v-bind专门设置属性值 --><td><img class="avatar" :src="item.image" :alt="item.name"></td>

在这里插入图片描述

v-if & v-show
在这里插入图片描述
v-model & v-on

案例:由于没有后端,只是实现采集用户输入的信息

采集表单项数据:v-model
在这里插入图片描述
添加事件监听(比如按钮点击)
在这里插入图片描述

一码全解,可自己运行查看网页效果:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vueLearn</title><head><meta charset="UTF-8"><title>Tlias智能学习辅助系统</title><style>body {margin: 20px;font-family: Arial, sans-serif;}.header {display: flex;justify-content: space-between;align-items: center;margin-bottom: 20px;}.system-title {font-size: 24px;font-weight: bold;}.search-area {background: #f5f5f5;padding: 15px;margin-bottom: 20px;border-radius: 4px;}.search-row {display: flex;gap: 20px;margin-bottom: 10px;}.search-item {display: flex;align-items: center;gap: 5px;}table {width: 100%;border-collapse: collapse;border: 1px solid #ddd;}th,td {padding: 12px;text-align: left;border-bottom: 1px solid #ddd;}th {background-color: #f9f9f9;font-weight: bold;}.operation-btn {color: #1890ff;cursor: pointer;margin-right: 10px;}.logout-btn {background: #1890ff;color: white;border: none;padding: 8px 15px;border-radius: 4px;cursor: pointer;}</style></head><body><div class="header"> <!-- 使用v-for循环渲染 --><div class="system-title">Tlias智能学习辅助系统</div><button class="logout-btn">退出登录</button></div><!-- 搜索表单区域 --><div class="main-container" id="container"><div class="search-area"><!-- 简单显示用户搜索的内容 -->{{searchFrom}}<form class="search-from"><label for="name">姓名:</label><input type="text" id="name" name="name" v-model="searchFrom.name" placeholder="请输入姓名"><label for="gender">性别:</label><select id="gender" name="gender" v-model="searchFrom.gender"><option value=""></option><option value="Male"></option><option value="Female"></option></select><label for="job">职位:</label><select id="job" name="job" v-model="searchFrom.job"><option value=""></option><option value="1">班主任</option><option value="2">教师</option><option value="3">助教</option><option value="4">学生</option><option value="5">家长</option></select><!-- 按下按钮时调用方法 --><button type="button" v-on:click="search">搜索</button><button type="button" v-on:click="reset">重置</button></form></div><!-- 表格区域 --><div><table><thead><tr><th>序号</th><th>姓名</th><th>性别</th><th>头像</th><th>职位</th><th>入职日期</th><th>最后操作时间</th><th>操作</th></tr></thead><!-- 表格主体 --><tbody><!-- 遍历empList数组,使用v-for渲染出每一项数据 --><tr v-for="(item, index) in empList" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.gender == 'Male' ? '男' : '女'}}</td><!-- 插值表达式是不能出现在标签内部的 --><!-- 但是可以使用v-bind专门设置属性值 --><td><img class="avatar" :src="item.image" :alt="item.name"></td><!-- v-if控制元素的显示与否,成立才渲染 --><td><span v-if="item.job == 1">班主任</span><span v-else-if="item.job == 2">教师</span><span v-else-if="item.job == 3">助教</span><span v-else-if="item.job == 4">学生</span><span v-else-if="item.job == 5">家长</span><span v-else>其他</span></td><!-- v-show控制元素的展示与隐藏,不成立也渲染,实际上控制的是display属性 --><!-- <td><span v-show="item.job == 1">班主任</span><span v-show="item.job == 2">教师</span><span v-show="item.job == 3">助教</span><span v-show="item.job == 4">学生</span><span v-show="item.job == 5">家长</span><span v-show>其他</span></td> --><td>{{item.entrydate}}</td><td>{{item.updatetime}}</td><td><span class="operation-btn">编排学员</span></td></tr></tbody></table></div></div><script type="module">javascript">import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';createApp({data() {return {searchFrom: { // 封装用户输入的查询条件name: '',gender: '',job: ''},// 方括号内是数组,大括号内是对象,对象中包含属性和值empList: [{"id": 1,"name": "John","image": "-","gender": "Male","job": "1","entrydate": "2021-06-15 15:30","updatetime": "2024-09-16 15:30"},{"id": 2,"name": "Alice","image": "-","gender": "Female","job": "2","entrydate": "2022-01-10 09:20","updatetime": "2024-09-18 13:15"},{"id": 3,"name": "Michael","image": "-","gender": "Male","job": "3","entrydate": "2020-11-23 11:00","updatetime": "2024-09-12 10:25"},{"id": 4,"name": "Sophia","image": "-","gender": "Female","job": "4","entrydate": "2019-08-05 16:40","updatetime": "2024-09-14 14:50"},{"id": 5,"name": "David","image": "-","gender": "Male","job": "5","entrydate": "2021-02-22 12:30","updatetime": "2024-09-15 09:00"},{"id": 6,"name": "Emily","image": "-","gender": "Female","job": "6","entrydate": "2023-03-16 08:15","updatetime": "2024-09-17 16:05"},{"id": 7,"name": "Daniel","image": "-","gender": "Male","job": "7","entrydate": "2020-06-30 14:45","updatetime": "2024-09-13 17:25"},{"id": 8,"name": "Olivia","image": "-","gender": "Female","job": "8","entrydate": "2022-07-11 10:50","updatetime": "2024-09-19 11:40"},{"id": 9,"name": "James","image": "-","gender": "Male","job": "9","entrydate": "2018-12-18 13:10","updatetime": "2024-09-20 15:55"},{"id": 10,"name": "Isabella","image": "-","gender": "Female","job": "10","entrydate": "2021-09-25 17:30","updatetime": "2024-09-21 10:35"}]}},// 方法// `methods`: 是 Vue 实例中的一个选项对象,// 它里面包含了多个方法。在 Vue 中,`methods` 用来定义组件中的 **函数**,这些函数可以在模板中绑定并执行,或者在 JavaScript 逻辑中调用。// 这里定义了一个 `search` 方法,用来将用户输入的搜索条件输出到控制台。methods:{   // 将搜索条件输出到控制台search() {console.log(this.searchFrom);},reset(){// 重置搜索条件,设置为空自动清空this.searchFrom = {name: '',gender: '',job: ''}}}}).mount("#container")</script></body></html>

end.

致谢:本文参考黑马程序员的视频,本人也看过很多黑马程序员的视频,给我带来非常大的帮助。
https://www.bilibili.com/video/BV1yGydYEE3H/?vd_source=1b8f9bfb1d0891faf1c70d7678ae56db
在这里插入图片描述

文章来源:https://blog.csdn.net/2401_87092242/article/details/146312486
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/devtools/168150.html

相关文章

【零基础入门unity游戏开发——unity3D篇】3D物理系统之 —— 3D碰撞器Collider

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

【大语言模型_5】xinference部署embedding模型和rerank模型

一、安装xinference pip install xinference 二、启动xinference ./xinference-local --host0.0.0.0 --port5544 三、注册本地模型 1、注册embedding模型 curl -X POST "http://localhost:5544/v1/models" \ -H "Content-Type: application/json" \…

C语言之 循环语句:程序运行的核心动力(上)

个人主页&#xff1a;strive-debug 在 C 语言中&#xff0c;分支结构可以通过 if、switch 语句来实现&#xff0c;循环结构则可以通过 for、while、do while 语句来实现。 if 语句 if 语句的语法形式如下&#xff1a; if (表达式)语句; 如果表达式成立&#xff08;为真&am…

MySQL配置文件my.cnf详解

目前使用的服务器系统是CentOS8.5 ,针对MySql8.4的配置示例&#xff0c;自己根据实际情况修改。 安装MySql8.4时&#xff0c;MySql8.4没有默认的my.cnf,需要用户根据需要自行配置my.cnf文件&#xff0c;大概可看到下面这样的参数列表&#xff0c;可能不同版本的mysql参数多少会…

数据结构与算法——算法3 面试常用排序算法

首先了解排序算法性能和优缺点 然后了解快排 和堆排序的方法。 可以参考如下的博客 八大排序(超详解附动图源码)

在项目中操作 MySQL

随着Web应用程序的发展&#xff0c;与数据库进行交互成为了后端开发中的核心任务之一。Node.js作为一个异步事件驱动的JavaScript运行时&#xff0c;非常适合构建可扩展的网络应用。而MySQL作为最流行的关系型数据库管理系统之一&#xff0c;自然成为了许多项目的首选数据库。本…

大华HTTP协议在智联视频超融合平台中的接入方法

一. 大华HTTP协议介绍 大华HTTP协议是大华股份&#xff08;Dahua Technology&#xff09;为其安防监控设备开发的一套基于HTTP/HTTPS的通信协议&#xff0c;主要用于设备与客户端&#xff08;如PC、手机、服务器&#xff09;之间的数据交互。该协议支持设备管理、视频流获取、…

2025最新版Node.js安装教程:从环境搭建到镜像加速全解析

一、Node.js 简介 Node.js 是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;采用事件驱动、非阻塞I/O模型&#xff0c;广泛应用于服务端开发、前端工具链构建等场景。其核心优势包括&#xff1a; 高性能&#xff1a;V8引擎编译执行JS代码&#xff0c;速度远超传统…