VUE基础入门

一、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

三、第三方组件

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.

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

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

相关文章

手机LiDAR-based激光雷达标定板提高无人汽车智能化程度

手机LiDAR-based 3D扫描和建模测试系统是一种利用激光雷达&#xff08;LiDAR&#xff09;技术进行三维扫描和模型创建的工具&#xff0c;它可以在手机上运行。这种测试系统可以用于各种应用&#xff0c;如地形测绘、建筑物建模、机器人视觉、无人驾驶汽车导航等。 手机LiDAR-ba…

【Java从入门到大牛】多线程

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年11月18日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f4…

回 溯 法

一、&#xff08;what&#xff1f;&#xff09; 二、&#xff08;why&#xff1f;&#xff09; 三、&#xff08;how&#xff1f;&#xff09; 四、典型例题分析&#xff1a; 例题1&#xff1a;大卖场购物车2——0-1背包问题 问题分析&#xff1a; 算法设计&#xff1a; 图…

vite vue3安装element-plus

准备 参考 安装 官网 yarn add element-plus完整引入 如果你对打包后的文件大小不是很在乎&#xff0c;那么使用完整导入会更方便。 main.ts // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import…

xlua源码分析(三)C#访问lua的映射

xlua源码分析&#xff08;三&#xff09;C#访问lua的映射 上一节我们主要分析了lua call C#的无wrap实现。同时我们在第一节里提到过&#xff0c;C#使用LuaTable类持有lua层的table&#xff0c;以及使用Action委托持有lua层的function。而在xlua的官方文档中&#xff0c;推荐使…

wpf devexpress 创建布局

模板解决方案 例子是一个演示连接数据库连接程序。打开RegistrationForm.BaseProject项目和如下步骤 RegistrationForm.Lesson1 项目包含结果 审查Form设计 使用LayoutControl套件创建混合控件和布局 LayoutControl套件包含三个主控件&#xff1a; LayoutControl - 根布局…

反激变压器计算方法_笔记

反激变压器计算方法_笔记 匝数比原边电感选定磁芯线圈匝数线径 原视频链接 匝数比 5V 是想要得到的输出电压 0.7V为二极管导通的压降 185Vx根号2是有效值 最大占空比取0.4。得出最小匝数为30。 更改某些值可能得出来的匝数比就不一定是30了&#xff0c; 这其实也是反激变压器…

ubuntu中用docker部署jenkins,并和码云实现自动化部署

1.部署jenkins docker network create jenkins docker run --name jenkins-docker --rm --detach \--privileged --network jenkins --network-alias docker \--env DOCKER_TLS_CERTDIR/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jen…

屏蔽bing搜索框的今日热点

中国版的Bing简直比百度还恶心了&#xff0c;“今日热点”要是在搜索设置里关闭了就没法提供搜索建议了&#xff0c;不关吧看着又烦人&#xff0c;就像下图这样。另外还有右上角的下载bing app和Rewards图标也闲着没啥用&#xff0c;Rewards图标还老有小红点&#xff0c;真受不…

6.8完全二叉树的节点个数(LC222-E)

算法&#xff1a; 如果不考虑完全二叉树的特性&#xff0c;直接把完全二叉树当作普通二叉树求节点数&#xff0c;其实也很简单。 递归法&#xff1a; 用什么顺序遍历都可以。 比如后序遍历&#xff08;LRV&#xff09;&#xff1a;不断遍历左右子树的节点数&#xff0c;最后…

Adversarial Attacks on Neural Networks for Graph Data

Adversarial Attacks on Neural Networks for Graph Data----《针对图数据的神经网络的对抗攻击》 论文提出了两个问题&#xff1a; 1、属性图的深度学习模型容易受攻击吗&#xff1f; 2、他们的结果可靠吗&#xff1f; 回答这两个问题需要考虑到GNN的特性&#xff1a; ①关…

2023.11.18 Hadoop之 YARN

1.简介 Apache Hadoop YARN &#xff08;Yet Another Resource Negotiator&#xff0c;另一种资源协调者&#xff09;是一种新的 Hadoop 资源管理器&#xff0c;它是一个通用资源管理系统和调度平台&#xff0c;可为上层应用提供统一的资源管理和调度。支持多个数据处理框架&…

订阅号和服务号有什么区别

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;我们都知道&#xff0c;服务号一个月只能发4次文章&#xff0c;但是订阅号每天都能发文章。不过在接收消息这一方面&#xff0c;服务号群发的消息有消息提醒&#xff0c;并显示在对话框&#xff1b…

react实现步进器

创建一个步进器组件&#xff0c;包含当前步骤&#xff08;currentStep&#xff09;的状态以及前进和后退的操作&#xff1a; import React, { useState } from react;function Stepper() {const [currentStep, setCurrentStep] useState(1);const handleNext () > {setCu…

torch.nn.functional.log_softmax 函数解析

该函数将输出向量转化为概率分布&#xff0c;作用和softmax一致。 相比softmax&#xff0c;对较小的概率分布处理能力更好。 一、定义 softmax 计算公式&#xff1a; log_softmax 计算公式&#xff1a; 可见仅仅是将 softmax 最外层套上 log 函数。 二、使用场景 log_soft…

Linux通过端口号找到对应的服务及其安装位置

Linux服务器中&#xff0c;通过端口号找到对应的服务及其安装位置&#xff0c;需要两步操作&#xff0c;如下&#xff1a; 第一步&#xff1a;根据端口号&#xff0c;确定对应的进程号&#xff08;以redis服务为例&#xff09; netstat -antup|grep 6379第二步&#xff1a;通…

企业服务器中了babyk勒索病毒怎么办,babyk勒索病毒解密数据集恢复

网络技术的不断发展应用&#xff0c;为企业的生产生活提供了强有力帮助&#xff0c;企业也不断走向数字化办公模式&#xff0c;而对于企业来说&#xff0c;企业计算机存储的数据至关重要&#xff0c;如果不加以保护很容易造成数据丢失&#xff0c;近期&#xff0c;云天数据恢复…

盘点3种Python网络爬虫过程中的中文乱码的处理方法

网络爬虫过程中三种中文乱码的处理方案&#xff0c;希望对大家的学习有所帮助 一、思路 其实解决问题的关键点就是在于一点&#xff0c;就是将乱码的部分进行处理&#xff0c;而处理的方案主要可以从两个方面进行出发。其一是针对整体网页进行提前编码&#xff0c;其二是针对…

C++初阶 日期类的实现(上)

目录 一、前置准备 1.1获得每月的天数 1.2获得每年的天数 1.3构造函数&#xff0c;析构函数和拷贝构造函数 二、日期与天数的,-,,-实现 2.1运算符重载 2.2运算符的实现 2.3-运算符的实现 2.4-运算符的实现 三、&#xff0c;--的实现 3.1前置&#xff0c;后置的实现 …

搭建企业社区,如何激发员工互动?

本文是关于企业内部社区搭建后怎么运营&#xff0c;如何激发员工互动。 作为运营者&#xff0c;我们搭建企业内部员工的目的首先得明确下来&#xff0c;一般都是打造和宣扬企业内部文化&#xff0c;发布公司政策通知和行业动态、组织公司关键节点活动、以及员工经验分享资源分…