【Java-SpringBoot+Vue+MySql】Day4-VUE框架使用

news2024/9/21 3:22:13

一、VUE入门

1、环境准备

2、预备知识

 

 

3、实战演练

 vue官网

Vue.js - 渐进式 JavaScript 框架 | Vue.js

 基础语法,vue2和vue3区别不大,但是后面路由会有很大区别。

前期基础语法,我们通过链接的方式使用vue,后面会用npm进行安装。

 (1)创建项目目录

电脑任意位置

 (2)使用VScode打开文件

 (3)新建html文件

 打一个 !模板自动生成

通过 CDN 使用 Vue

 <script src="https://unpkg.com/vue@3/dist/vue.esm-browser.js"></script>

或者

 <script src="https://unpkg.com/vue@3"></script>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    
</body>
</html>

  (4)实例1-基本用法练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id="app">
        {{message}}
    </div>
    <script>
        Vue.createApp({
            data(){
                return{
                    message:"Hello Vue!"
                }
            }
        }).mount("#app")
    </script>
</body>
</html>

 安装插件open in browser

 代码页面右键在浏览器打开

 运行效果

安装Live Serve插件能同步刷新 

 四步走-小结

step1:引入vue

step2:声明控制区

step3:创建vue实例对象

step4:指定数据源,即MVVM中的Model

官方文档

 

 

(5)实例2-内容渲染指令练习

v-html指令的作用是:设置元素的innerHTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
        <p>姓名:{{username}}</p>
        <p>性别:{{gender}}</p>
        <p>{{desc}}</p>
        <p v-html="desc"></p>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        // Vue.createApp({
        //     //指定数据源,即MVVM中的Model
        //     data(){
        //         return{
        //             message:"Hello Vue!"
        //         }
        //     }
        // }).mount("#app")
        const vm={//数据封装
            data: function(){
                return{
                    username:"zhangsan",
                    gender:"man",
                    desc:"<a href='https://www.baidu.com/'>百度</a>"
                }
            }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

(6)实例3-属性绑定指令练习

属性前面加 v-bind: 或者直接属性前面加 :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
      <a :href="link">百度</a></br>
      <a v-bind:href="link">百度</a></br>
      <input type="text" :placeholder="inputValue"></br><!--在标签属性中前面如果出现:后面引号里的值就是要绑定的属性变量-->
      <img :src="imgSrc" :style="{width:w}" alt="">
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
            data: function(){
                return{
                    link:"https://www.baidu.com/",
                    inputValue:"请输入文字",
                    imgSrc:"./images/t.png",
                    w:"500px"
                }
            }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

 

(7)实例4-使用JS表达式练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
        niaho
      <p>{{number++}}</p>
      <p>{{ok?'True':'False'}}</p>
      <p{{message.split('').reverse().join('-')}}></p>
      <p :id="'list-'+id">xxx</p>
      <p>{{<user class="name"}}</p>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
            data: function(){
                return{
                    number:9,
                    ok:false,
                    message:'abc',
                    id:3,
                    user:{
                        name:'111',
                    }
                }
            }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

(8)实例5-事件绑定指令练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
        <h3>HP:{{count}}</h3>
        <button v-on:click="addCount">+</button>
        <button @click="count+=1">+</button><!-- v-on 等价 @ -->
        <button v-on:click="subCount">-</button>
        <button @click="count-=1">-</button>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
          data:function(){//数据域
            return{
                count: 0,
            }
          },
          methods:{//方法域
            //点击按钮让count+1
            addCount(){
                this.count+=1
            },
            //点击按钮让count-1
            subCount(){
                this.count-=1
            },
          }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

(9)实例6-条件渲染指令练习

频繁判断用v-show性能更高

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
       <button @click="flag = !flag">Toggle Flag</button>
       <p v-if="flag">请求成功,被v-if控制</p>
       <p v-show="flag">请求成功,被v-show控制</p>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
          data:function(){//数据域
            return{
                flag:false,
            }
          },
          methods:{//方法域
           
          }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

(10)实例7 v-eles和v-else-if指令练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
       <p v-if="num>0.5">随机数>0.5</p>
       <p v-else>随机数≤0.5</p>
        <hr/>
        <p v-if="type === 'A'">优秀</p>
        <p v-else-if="type === 'B'">良好</p>
        <p v-else-if="type === 'C'">一般</p>
        <p v-else>不及格</p>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
          data:function(){//数据域
            return{
                num:1,
                type:'A'
            }
          },
          methods:{//方法域
           
          }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

(11)实例8-列表渲染指令练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">
       <ul>
        <li v-for="(user,i) in userList">索引是:{{i}},姓名是:{{user.name}}</li>
       </ul>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
          data:function(){//数据域
            return{
              userList:[
                {id:1,name:"zs"},
                {id:2,name:"aa"},
                {id:3,name:"ww"},
              ]
            }
          },
          methods:{//方法域
           
          }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

(12)实例9 v-for中的key练习

v-model:双向绑定,如果页面值发生变化,则数据本身值也发生变化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--1、引入vue组件-->
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <!--2、声明要被vue所控制的DOM区域-->
    <div id="app">

        <div>
            <input type="text" v-model="name">
            <button @click="addNewUser">添加</button>
        </div>

       <ul>
        <li v-for="(user,index) in userList" :key="user.id">
            <input type="checkbox"/>
            姓名:{{user.name}}
        </li>
       </ul>
    </div>
    <!--3、创建vue的实例对象-->
    <script>
        const vm={//数据封装
          data:function(){//数据域
            return{
              userList:[
                {id:1,name:"zs"},
                {id:2,name:"aa"},
                {id:3,name:"ww"},
              ],
              //输入用户名
              name:"",
              //下一个可用id
              nextId:3
            }
          },
          methods:{//方法域
            addNewUser(){
                this.userList.unshift({id:this.nextId,name:this.name})//unshif:在数组起始位置添加
                this.name=""
                this.nextId++
            }
          }
        }
        const app = Vue.createApp(vm)//创建vue实例并对数据进行封装
        app.mount("#app")//挂载应用
    </script>
</body>
</html>

 

二、组件化开发

1、预备知识

 

 

 

 

 

2、实际操作

(1)下载安装nodejs 

全部版本:Index of /dist/

(我用的是16版) 

全局配置:

# 在安装目录下创建node_global和node_cache
npm config set prefix "E:\Language\node-v16.12.0-win-x86\node_global"
npm config set cache "E:\Language\node-v16.12.0-win-x86\node_cache"
# 判断是否安装成功
npm config get prefix
npm config get cache

# 配置镜像
npm config set registry http://registry.npm.taobao.org
# 安装vue2-cli
npm install vue-cli -g
# 安装vue3-cli
npm install -g @vue/cli

如何查看vue-cli版本_笔记大全_设计学院

(2)创建项目

此处引用大佬笔记:

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

 原始代码

<template>
  <h1>Hello{{ title }}-{{ score}}</h1>
</template>

<script>
export default {
  name: "Hello",
  props: ["title"],
  data: function () {
    return {
      "score": 1,
    }
  }
}
</script>

<style scoped>

</style>

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <Hello title="标题"></Hello>
  </div>
</template>

总结:

创建项目:vue create 名字 # 新手选择vue3,然后把eslint去掉
启动项目:npm run serve

安装所有依赖:npm install

运行程序:

单击查看,点击终端

 输入运行指令:

npm run serve

点击网站即可打开前端网页 

也可在cmd窗口执行指令

 

页面如下 

​ 

(3)组件式开发

components下新建组件Hello.vue

 代码:

<template>
    <h1>Hello</h1>
</template>

<script>

</script>

<style>

</style>

在App.vue中导入(组件嵌套)

import Hello from './components/Hello.vue'

 注册

export default {
  name: 'App',
  components: {
    Hello
  }
}

载入模板(Vue.vue组件也有自己的模板样式)

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <Hello></Hello>
</template>

 main.js中实现挂载

vue的控制域可以在index.html中看到

效果

三、第三方组件

1、知识预习

 

2、实战演练

参考链接:

前端学习笔记-Vue2-基础_vue data:function_C_Cercis Chinensis的博客-CSDN博客

7.MybatisPlus多表查询及分页查询_哔哩哔哩_bilibili

模板语法 | Vue.js

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

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

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

相关文章

Transformer-XL模型简单介绍

目录 一、前言 二、整体概要 三、细节描述 3.1 状态复用的块级别循环 3.2 相对位置编码 四、论文链接 一、前言 以自注意力机制为核心的 Transformer 模型是各种预训练语言模型中的主要组成部分。自注意力机制能够构建序列中各个元素之间的上下文关联程度&#xff0c;挖掘…

java 2023秒杀项目 day(1) 面经

java 2023杀项目 day(1) 面经 一、秒杀项目1.1 如何设计秒杀系统1.2 数据库 二、业务2.1 登录2.2.1 密码加密 2.2.2 密码参数校验2.2.3 分布式session2.2.3.1 解决方案 2.2.4 参数解析器 2.3 异常处理2.3.1 ControllerAdvicerExceptionHandler 2.4 秒杀2.4.1 逻辑2.4.1 秒杀前判…

图像处理——以支票识别为例

用到环境 1、pycharm community edition 2022.3.2 2、Python 3.10 后续应该会在资源上传项目&#xff0c;需要的话可以私信我。 流程 图1 扩展实验“金额识别”流程图 正文 导入 cv2、pytesseract、re 和 locale 模块。 使用 cv2.imread() 函数加载名为 cheque.jpg 的支票图像…

ROS:结构

目录 前言一、设计者二、维护者三、系统架构四、ROS自身结构 前言 从不同的角度&#xff0c;对ROS架构的描述也是不同的&#xff0c;一般我们可以从设计者、维护者、系统结构与自身结构4个角度来描述ROS结构: 一、设计者 ROS设计者将ROS描述为“ROS Plumbing Tools Capab…

数仓工具Hive 概述

Hive Hive简介Hive架构HiveSQL语法不同之处建表语句查询语句 Hive查看执行计划Hive文件格式 Hive简介 Hive是由Facebook开源&#xff0c;基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能。 通过Hive可以将mapred…

数字IC前端学习笔记:仲裁轮询(三)

相关文章 数字IC前端学习笔记&#xff1a;LSFR&#xff08;线性反馈移位寄存器&#xff09; 数字IC前端学习笔记&#xff1a;跨时钟域信号同步 数字IC前端学习笔记&#xff1a;信号同步和边沿检测 数字IC前端学习笔记&#xff1a;锁存器Latch的综合 数字IC前端学习笔记&am…

mitmproxy抓包原理

文章目录 mitmproxy原理详解1 mitmproxy 基本原理2 作为中间代理获取HTTP请求信息2.1 应对显式HTTP请求2.2 应对隐式HTTP请求 3 作为中间代理获取HTTPS请求信息3.1 显式HTTPS请求1) 获取远程主机名2) 处理主题备用名称SAN3) 处理服务器名称指示SNI4) 显式HTTPS请求信息获取整个…

基于深度学习的高精度烟雾检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度烟雾检测识别系统可用于日常生活中或野外来检测与定位烟雾目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的烟雾目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

为什么数据库字段建议设置为NOT NULL?

目录 一、性能 二、开发的友好性 三、聚合函数不准确 四、null与其它值计算 五、distinct、group by、order by的问题 六、索引问题 七、其它问题 一、性能 如果查询中包含可为null的列&#xff0c;对MYSQL来说更难优化&#xff0c;因为可为null的列使得索引、索引统计…

NUCLEO-F411RE RT-Thread 体验 (9) - GCC环境 PWM的驱动移植以及简单使用

NUCLEO-F411RE RT-Thread 体验 (9) - GCC环境 PWM的驱动移植以及简单使用 驱动移植 驱动位于drv_pwm.c文件中&#xff0c;components层代码位于rt_drv_pwm.c中。 修改Makefile文件 修改配置文件rtconfig.h LED2链接PA5&#xff0c;而TIM2_CHANNEL1可从PA5输出PWM&#xff0…

ubuntu命令

查看当前用户 whoami 进入root权限 sudo su 修改用户名密码 sudo passwd username #修改用户密码 //username是用户设置用户名&#xff0c;记得替换 sudo passwd root #修改root密码 https://blog.csdn.net/m0_54647521/article/details/127521032 重启…

图形编辑器开发:以光标位置缩放画布

大家好&#xff0c;我是前端西瓜哥。 画布缩放是图形设计工具中很重要的基础能力。 通过它&#xff0c;我们可以像举着一台摄影机&#xff0c;在图形所在的世界到处游逛&#xff0c;透过镜头&#xff0c;可以只看自己想看的图形&#xff1b;可以拉近摄影机&#xff0c;看到图…

SpringBoot 如何使用 @ControllerAdvice 注解进行全局异常处理

SpringBoot 如何使用 ControllerAdvice 注解进行全局异常处理 在 Web 开发中&#xff0c;异常处理是非常重要的一环。在 SpringBoot 框架中&#xff0c;我们通常使用 ExceptionHandler 注解来处理 Controller 层的异常。但是&#xff0c;如果想要处理全局异常&#xff0c;我们…

【MySql】MySql事务常见操作

文章目录 准备工作事务常见操作方式总结 准备工作 将mysql的默认隔离级别设置成读未提交 set global transaction isolation level read uncommitted;注意&#xff1a;设置完毕之后&#xff0c;需要重启终端&#xff0c;进行查看 select tx_isolation 创建测试表 mysql>…

HTML5 的新特性

html基础知识html基础知识_上半场结束&#xff0c;中场已休息&#xff0c;下半场ing的博客-CSDN博客html5的新特性HTML5 的新特性_上半场结束&#xff0c;中场已休息&#xff0c;下半场ing的博客-CSDN博客 目录 1.0 HTML5 的新特性 1.1 HTML5 新增的语义化标签 1.2 HTML5 新增的…

LabVIEW何得知是谁在连接远程前面板

LabVIEW何得知是谁在连接远程前面板 想要知道连接远程前面板的用户的身份。如何来得知用户的身份和他们连接远程前面板的时间&#xff1f; 解答: 可以使用Remote Panel: Connections To Clients属性或者Remote Panel Client Connections方法来得知连接远程面板用户的身份。Re…

TypeScript ~ TS 掌握编译文件配置项 ⑤

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; TypeScript ~ TS &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &…

【2023,学点儿新Java-20】流程控制语句关键字及其介绍:while、do、break、continue、return

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-19】Java特殊空类型关键字 | Java流程控制语句关键字 | switch-case 选择结构的执行过程&注意点 | 详解&#xff1a;for循环的普通和增强版本【2023&#xff0c;学点儿新Java-18】Java关键字汇总说明 |附&#xff1a…

chatgpt赋能python:Python新手常见的报错提示及解决方法

Python新手常见的报错提示及解决方法 Python是一种非常流行的编程语言。对于新手来说&#xff0c;Python在学习过程中可能会遇到许多报错提示&#xff0c;这些提示可能会让人感到很困惑。本文将介绍Python新手常见的报错提示&#xff0c;并提供解决方法。 IndentationError: …

ninja的简单使用

文章目录 Ninja安装windows环境Linux环境 入门使用与CMake一起使用 Ninja安装 windows环境 问题的解决通常有多种方法。按照结果的好坏程度&#xff0c;可以将解决方法简单的划分为&#xff0c;上中下三个层次&#xff0c;见:为什么谋士总喜欢提上中下三策&#xff1f; 在w…